3

根据此页面,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 值?

4

1 回答 1

7

已编辑

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

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

API 参考已更新以包含新search.score()功能。

原答案:

Azure 搜索当前不允许您在orderby子句中引用分数。请投票支持此UserVoice 建议,以帮助我们确定这项工作的优先级。

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

于 2015-12-11T23:30:58.017 回答