首页 > 解决方案 > (公平)Solr 随机结果排序(按类别分组)

问题描述

我们有一位客户要求以公平公正的方式返回其搜索页面中的结果。本质上,他们退回的产品是“假日包裹”。每个产品都由不同的供应商列出,并且由于市场的股东是供应商,他们绝对不能对任何特定的供应商表现出任何偏好。(即,每个人都需要有相同的曝光,不管他们的实际库存/产品的优点)

我们一直在做的只是随机化,但真正随机的问题是,在搜索结果页面上,一个有 100 个包的供应商与每个有 1 个包的其他 12 个供应商的搜索结果页面上,只是不显示。在最坏的情况下,我们有一个供应商大约有 7000 个包裹,而该类别中的其他供应商只有 1 或 2 个产品。所以真正的随机意味着其他供应商完全被淹没了。我们克服这个问题的方法是提振所有其他供应商,但是直到所有其他产品都上市后,这个拥有 7000 个包的供应商才会出现。

总而言之,我们试图实现的是公平、公正的排序,以便在退回其他供应商的其他产品之前,至少先退回每个供应商的一种产品。一旦其他产品被退回,那么一切都是公平的游戏......

标签: sortingsolrsolr4

解决方案


Lucene 中有一些东西可以处理非常相似的事情:“从该字段的每个键中最多显示 X 个文档”,DiversifiedTopDocsCollector。似乎您想要“显示该字段中每个键的至少 X 个文档”。

我想如果现有的收集器不够好,你可以修改它来实现你所需要的。问题是,在 Solr 中显示这个收集器所需的代码还没有到位……所以你也需要这样做。

如前所述,另一种选择是尝试通过折叠/分组来完成此操作。


推荐阅读