首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Google关键字搜索+其他属性的排序

Google关键字搜索+其他属性的排序
EN

Stack Overflow用户
提问于 2012-01-10 10:08:21
回答 2查看 392关注 0票数 2

假设我有一个实体看起来有点像这样:

代码语言:javascript
运行
复制
class MyEntity(db.Model):
    keywords            = db.StringListProperty()
    sortProp            = db.FloatProperty()

我有一个过滤器,它通过这样做来进行关键字搜索:

代码语言:javascript
运行
复制
query = MyEntity.all()\
                .filter('keywords >=', unicode(kWord))\
                .filter('keywords <',  unicode(kWord) + u"\ufffd")\
                .order('keywords')

效果很好。我遇到的问题是,如果我试图使用“sortProp”对其下订单:

代码语言:javascript
运行
复制
                .order('sortProp')

订购没有任何效果。我意识到为什么-文档特别指出这是不可能的,当使用带有多值属性的等式过滤器(来自Google文档)时,排序顺序被忽略了:

一个重要的警告是在多值属性上使用等式过滤器和排序顺序的查询。在这些查询中,排序顺序被忽略。对于单值属性,这是一个简单的优化。每个结果对于属性都具有相同的值,因此不需要对结果进行进一步排序。然而,多值属性可能具有附加值.由于忽略排序顺序,查询结果可能以与应用排序顺序不同的顺序返回。(恢复已删除的排序顺序将非常昂贵,需要额外的索引,而且这种用例非常少见,因此查询计划器将其关闭。)

我的问题是:有谁知道解决这个问题的好办法吗?有没有更好的方法来做一个关键字搜索,以规避这一限制?我真的很想把关键字和其他属性的排序结合起来。我能想到的唯一解决方案是在查询之后对列表进行排序,但是如果这样做,我就失去了将其偏移到查询中的能力,而且如果数据集很大,我甚至可能得不到排序顺序最高的结果。

谢谢你的小费!

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8801508

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档