根据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值?
答案 0 :(得分:6)
<强>被修改强>
Azure Search现在支持使用新的search.score()
OData函数按分数排序。例如,要按分数按名称排序,请执行以下操作:
$orderby=search.score() desc, name asc
API reference已更新为包含新的search.score()
功能。
原始回答:
Azure搜索目前不允许您引用orderby
子句中的分数。请投票支持UserVoice suggestion以帮助我们确定此工作的优先顺序。
但请注意,两个文档的得分很少相同,因此在$oderby=@search.score
之后使用断路器很少会发挥作用,并且在大多数情况下,排序顺序相当于按等级排序,这是默认情况下发生的事情。