【问题标题】:How do you include Azure Search's @search.score as part of your custom $orderby clause如何将 Azure 搜索的 @search.score 作为自定义 $orderby 子句的一部分
【发布时间】:2017-07-20 03:04:32
【问题描述】:

根据this page,Azure 搜索结果的默认排序是按 Azure 自己的分数(降序)。但是,您可以提供一个 $orderby 子句,其定义为:

用于对结果进行排序的逗号分隔表达式列表。每个 表达式可以是字段名称或对 geo.distance() 的调用 功能。

我想按 Azure 的 @search.score desc、MyFieldOne、MyFieldTwo 排序。但是,我不知道如何引用 @search.score “字段”。

我尝试了以下方法:

$orderby=search.score+desc,MyFieldOne,MyFieldTwo
$orderby=@search.score+desc,MyFieldOne,MyFieldTwo
$orderby=%40search.score+desc,MyFieldOne,MyFieldTwo

这些都会导致 http 502 或 400s。

如何在我的请求中引用 @search.score 值?

【问题讨论】:

    标签: azure-cognitive-search


    【解决方案1】:

    已编辑

    Azure 搜索现在支持使用新的 search.score() OData 函数按分数排序。例如,要按分数然后按名称排序,请执行以下操作:

    $orderby=search.score() desc, name asc

    API reference 已更新为包含新的 search.score() 函数。

    原答案:

    Azure 搜索当前不允许您在 orderby 子句中引用分数。请为此UserVoice suggestion 投票,以帮助我们优先考虑这项工作。

    但是请注意,两个文档的得分很少相同,因此在 $oderby=@search.score 之后使用决胜局很少会发挥作用,并且在大多数情况下,排序顺序将等同于按等级排序,即是默认情况下发生的情况。

    【讨论】:

    • 我的索引有很多看似简单的重复数据。例如,一个包含 1000 个项目的索引,其文本为“日落”,其中图像字段所指的可能是用户上传的日落照片,我们有一个路径。如果我们搜索“日落”,它们都会以相同的分数返回。由于我提供的是分页结果集,因此我需要使用我自己的提供确定性结果的字段进一步限定排序,以便分页允许我对所有结果进行分页。我现在做不到。第 1 页上的许多结果显示在第 2-n 页上,而不允许我查看所有结果。
    猜你喜欢
    • 2016-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-09-30
    • 2021-10-30
    • 1970-01-01
    • 1970-01-01
    • 2014-03-01
    相关资源
    最近更新 更多