我们想知道,Azure 搜索是否可以实现下面提到的场景。
让我们有一个包含三列的 Azure 搜索索引:
1. Id [Edm.String]
2. Tags [Collection(Edm.String)]
3. MaxScore [Edm.Int32]
Run Code Online (Sandbox Code Playgroud)
该索引包含以下两个条目:
Id Tags MaxScore
1 Paris,London,Rome 30
2 Paris 10
Run Code Online (Sandbox Code Playgroud)
我们还有一个评分配置文件和一个 Tag (Sum, Linear) 类型的评分函数,它以 10 分(boost = 10)评估每个标签。
我们想在这个索引中搜索带有标签“Paris, London”的记录,并根据合规百分比对其进行排序,而 100% 是列 MaxScore 中的值。
问题是默认情况下 Azure 搜索按分数对记录进行排序。所以结果如下:
Id Tags MaxScore Score %
1 Paris,London,Rome 30 20 67%
2 Paris 10 10 100%
Run Code Online (Sandbox Code Playgroud)
但是我们需要按 [%] 列按降序对记录进行排序。使 Azure 搜索可以按表达式对记录进行排序就足够了。在我们的例子中,它类似于 $orderby=score*(100/MaxScore) 。然而,这目前是不可能的。
谢谢你。