【问题标题】:(Fair) random Solr results sorting (grouped by category)(公平)随机Solr结果排序(按类别分组)
【发布时间】:2018-08-09 12:30:42
【问题描述】:

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

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

总而言之,我们想要实现的是公平、公正的分类,以便在退回其他供应商的其他产品之前,至少先退回每个供应商的一件产品。一旦其他产品被退回,那就是公平的游戏......

【问题讨论】:

  • 单个查询的所有文档是否都位于单个服务器上? (即grouping(在分布式环境中工作,尽管某些功能可能不工作)或Collapse and Expand 是否有效?策略是进行一次查询以获取每个组的顶部文档,然后进行第二次查询以获取对于那些已经返回的 id,其他所有带有否定 fq 的东西。

标签: sorting solr solr4


【解决方案1】:

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

我想如果现有的收集器不够好,您可以对其进行修改以达到您的需要。问题是,在 Solr 中显示此收集器所需的代码尚未到位......所以您也需要这样做。

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

【讨论】:

    猜你喜欢
    • 2013-05-31
    • 1970-01-01
    • 1970-01-01
    • 2017-04-09
    • 2012-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-10
    相关资源
    最近更新 更多