GAE 搜索 API 排序
Posted
技术标签:
【中文标题】GAE 搜索 API 排序【英文标题】:GAE Search API sorting 【发布时间】:2013-11-22 12:23:12 【问题描述】:我基本上想使用 MatchScore 对我的文档进行排序,但是,提升那些有图像的文档。
为此,我的方法是在文档中添加一个具有提升值的字段,然后将该值乘以文档_score。
问题是,使用以下代码,我无法根据两个值的乘积对文档进行排序。 Search API 返回按 _score 排序的文档,而不是我传递的 SortOptions 表达式。
sort_opts = SortOptions(
match_scorer=search.MatchScorer(),
expressions=[
search.SortExpression(
expression='_score * has_img',
direction=search.SortExpression.DESCENDING,
default_value=0.0
)
]
)
options = QueryOptions(
limit=10,
sort_options=sort_opts,
returned_expressions=[
FieldExpression('score', '_score * has_img'),
FieldExpression('normalscore', '_score * 1')
]
)
index = search.Index(name='Search', namespace='search')
results = index.search(
query=Query(
query_string=search_query,
options=options
)
)
如您所见,为了进行调试,我返回了我想要排序的分数以及默认分数。它们只是返回正确的值,但是,文档仍按默认分数排序。
对我做错了什么有任何想法吗?
【问题讨论】:
我遇到了同样的问题,这似乎是一个 GAE 错误。我发现的唯一方法是使用内置的 _rank 字段(请参阅query and sorting options)。基本思想是将文档的 _rank 字段设置为表示“拥有图像”的值。 【参考方案1】:如上所述:
我遇到了同样的问题,这似乎是一个 GAE 错误。我发现的唯一方法是使用内置的 _rank 字段(请参阅查询和排序选项)。基本思想是将文档的 _rank 字段设置为代表“有图像”的值
【讨论】:
以上是关于GAE 搜索 API 排序的主要内容,如果未能解决你的问题,请参考以下文章
如何对 MusicBrainz 搜索 API 的结果进行排序
CosmosDB mongoDB API 排序和全文搜索抛出错误