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 排序和全文搜索抛出错误

带有分页和排序的 Spring Boot JPA 规范 API

ngTbale真分页实现排序搜索等功能

VueJS API 结果按等级 asc 排序

如何将排序添加到弹簧数据弹性搜索