我想知道如何对较低的项目进行排名,这些项目的字段经常出现在结果中。比如,我们有一个类似的结果集:
"name": "Red T-Shirt"
"store": "Zara"
"name": "Yellow T-Shirt"
"store": "Zara"
"name": "Red T-Shirt"
"store": "Bershka"
"name": "Green T-Shirt"
"store": "Benetton"
我希望以这样的方式对文档进行排序,即包含频繁找到的字段(在本例中为"store")的文档会被降低到结果中较低的位置,这是为了实现一点多样性,这样搜索就不会从同一个商店产生最高的结果。
在上面的例子中,如果我搜索"T恤",我希望看到一个Zara T恤在顶部,其余的Zara T恤应该出现在较低的位置,在所有其他独特的商店。
到目前为止,我试图研究使用聚合桶排序或脚本排序,但没有成功。有没有可能实现这一点内部的搜索引擎?
提前感谢!
1条答案
按热度按时间6mzjoqzu1#
从Elastic forum中了解到,这可以通过diversified sampler aggregation和top hits aggregation的组合来实现。我不知道如果在高负载生产系统上使用,会对性能产生什么影响。下面是一个代码示例,使用风险自担: