(公平)随机 Solr 结果排序(按类别分组)
(Fair) random Solr results sorting (grouped by category)
我们有一位客户要求以公平公正的方式返回其搜索页面中的结果。本质上,他们退回的产品是 "holiday packages"。每个产品都由不同的供应商列出,因为市场的股东是供应商,他们绝对不能对任何特定供应商表现出任何偏好。 (即每个人都需要有相同的曝光率,无论他们实际的优点如何inventory/products)
我们一直在做的只是随机化,但真正随机的问题是,一个有 100 个包裹的供应商在搜索结果页面上有 12 个其他供应商,每个供应商有 1 个包裹,只是不显示。在最坏的情况下,我们有一个供应商拥有大约 7000 个软件包,而该类别中的其他供应商只有 1 或 2 个产品。所以真正的随机意味着其他供应商完全被淹没了。我们克服这个问题的方法是提升所有其他供应商,但是直到所有其他产品都上市后,这个拥有 7000 个软件包的供应商才出现。
总而言之,我们要实现的是一种公平、公正的分类,以便在退回其他供应商的其他产品之前,首先退回每个供应商的至少一种产品。一旦其他产品被退回,那么一切都是公平的游戏...
Lucene 中有一些东西可以处理非常相似的东西:"show at most X docs from each key in this field",DiversifiedTopDocsCollector。看来你想要"show at least X docs from each key in this field"。
我想如果现有的收集器不够好,您可以修改它来实现您的需要。问题是,在 Solr 中显示此收集器所需的代码尚未到位......因此您也需要这样做。
如前所述,另一种选择是尝试使用 Collapse/Grouping 来完成此操作。
我们有一位客户要求以公平公正的方式返回其搜索页面中的结果。本质上,他们退回的产品是 "holiday packages"。每个产品都由不同的供应商列出,因为市场的股东是供应商,他们绝对不能对任何特定供应商表现出任何偏好。 (即每个人都需要有相同的曝光率,无论他们实际的优点如何inventory/products)
我们一直在做的只是随机化,但真正随机的问题是,一个有 100 个包裹的供应商在搜索结果页面上有 12 个其他供应商,每个供应商有 1 个包裹,只是不显示。在最坏的情况下,我们有一个供应商拥有大约 7000 个软件包,而该类别中的其他供应商只有 1 或 2 个产品。所以真正的随机意味着其他供应商完全被淹没了。我们克服这个问题的方法是提升所有其他供应商,但是直到所有其他产品都上市后,这个拥有 7000 个软件包的供应商才出现。
总而言之,我们要实现的是一种公平、公正的分类,以便在退回其他供应商的其他产品之前,首先退回每个供应商的至少一种产品。一旦其他产品被退回,那么一切都是公平的游戏...
Lucene 中有一些东西可以处理非常相似的东西:"show at most X docs from each key in this field",DiversifiedTopDocsCollector。看来你想要"show at least X docs from each key in this field"。
我想如果现有的收集器不够好,您可以修改它来实现您的需要。问题是,在 Solr 中显示此收集器所需的代码尚未到位......因此您也需要这样做。
如前所述,另一种选择是尝试使用 Collapse/Grouping 来完成此操作。