代码之家  ›  专栏  ›  技术社区  ›  Layke

(公平)随机Solr结果排序(按类别分组)

  •  2
  • Layke  · 技术社区  · 6 年前

    我们有一个客户要求以公平公正的方式返回他们搜索页面中的结果。从本质上讲,他们返回的产品是“假日套餐”。每个产品都由不同的供应商列出,由于市场的股东是供应商,他们绝对不能对任何特定的供应商显示任何偏好。(即,无论实际库存/产品的价值如何,每个人都需要有相同的风险敞口)

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

    总之,我们所要达到的是一个公平、公正的排序,这样每个供应商至少有一个产品在其他供应商的产品被退回之前被退回。一旦其他产品被退回,那就完全公平了。。。

    1 回复  |  直到 6 年前
        1
  •  1
  •   Persimmonium    6 年前

    Lucene中有一些类似的东西需要处理:“在这个字段中,每个键最多显示X个文档” DiversifiedTopDocsCollector . 似乎您希望“显示此字段中每个键的至少X个文档”。

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

    另一种选择,如前所述,是通过折叠/分组来完成这项工作。