Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sorting (一般)随机Solr结果排序(按类别分组)_Sorting_Solr_Solr4 - Fatal编程技术网

Sorting (一般)随机Solr结果排序(按类别分组)

Sorting (一般)随机Solr结果排序(按类别分组),sorting,solr,solr4,Sorting,Solr,Solr4,我们有一位客户要求以公平公正的方式返回搜索页面中的结果。基本上,他们退回的产品是“假日套餐”。每个产品都由不同的供应商列出,因为市场的股东是供应商,他们绝对不能对任何特定的供应商表现出任何偏好。(即,无论实际库存/产品的价值如何,每个人都需要有相同的风险敞口) 我们一直在做的只是随机化,但真正随机的问题是,在搜索结果页面上,一个供应商有100个软件包,而其他12个供应商各有一个软件包,只是没有显示。在最坏的情况下,我们有一个供应商有大约7000个软件包,而这一类的其他供应商只有1或2个产品。因此

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

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


总之,我们试图实现的是一个公平、公正的排序,这样每个供应商至少有一个产品首先被退回,然后其他供应商的其他产品才被退回。一旦其他产品被退回,那么一切都是公平的

Lucene中也有类似的内容:“在该字段中每个键最多显示X个文档”。似乎您希望“显示此字段中每个键的至少X个文档”

我想,如果现有的收集器不够好,您可以修改它以实现所需的功能。问题是,在Solr中呈现此收集器所需的代码尚未到位…因此您也需要这样做


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

单个查询的所有文档都位于单个服务器上吗?(即,会(在分布式环境下工作,尽管某些功能可能不起作用)或工作?策略是进行一次查询以获取每个组的顶级文档,然后进行第二次查询,以获取已返回ID的所有其他内容,并使用负的
fq