在结果具有相同分数时在Azure搜索中进行分页

时间:2017-04-24 15:59:32

标签: azure search azure-search scoring

我在我的电子商务网站上使用Azure搜索,现在我遇到了在搜索页面上进行分页的问题。当我重新加载搜索页面时,我可以得到不同的产品订单。因此,当我使用分页时,我可以在不同的页面上看到相同的产品,这很关键。

我开始研究出现了什么问题,并且我在Microsoft文档https://docs.microsoft.com/en-us/rest/api/searchservice/add-scoring-profiles-to-a-search-index#what-is-default-scoring

上找到了这些信息
  

搜索分数值可以在整个结果集中重复。对于   例如,您可能有10个分数为1.2的项目,20个具有分数的项目   得分为1.0,得分为0.5的20项。多次点击时   具有相同的搜索分数,相同的评分项目的顺序不是   定义,并不稳定。再次运行查询,您可能会看到   物品转移位置。给出两个具有相同分数的项目   不保证首先出现哪一个。

所以如果我说得对,我会面对这个问题因为产品得分相同。

如何解决这个问题?

2 个答案:

答案 0 :(得分:2)

你说得对!由于您获得的产品具有相同的分数,因此无法保证首先出现的产品。 为了在此阶段避免它,您可以向$ orderby参数添加具有唯一值的字段,这样您就可以保证相同的顺序。但是,这种方法不考虑得分。我们目前正在努力解决这个问题。一旦解决方案可用,我们将更新此答案(此时的ETA是几周,而不是几个月)。

答案 1 :(得分:1)

请注意,您现在可以使用search.score()函数按分数排序: 从以下链接: https://docs.microsoft.com/en-us/rest/api/searchservice/odata-expression-syntax-for-azure-search。 "您可以指定多个排序条件。表达式的顺序决定了最终的排序顺序。例如,要按分数降序排序,然后按分级排序,语法将为$ orderby = search.score()desc,rating desc。"