如何将Azure Search的@ search.score作为自定义$ orderby子句的一部分

时间:2015-12-11 21:41:26

标签: azure-search

根据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值?

1 个答案:

答案 0 :(得分:6)

<强>被修改

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

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

API reference已更新为包含新的search.score()功能。

原始回答:

Azure搜索目前不允许您引用orderby子句中的分数。请投票支持UserVoice suggestion以帮助我们确定此工作的优先顺序。

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

相关问题