Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.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
Solr 如何根据分布获得结果?_Solr_Distribution - Fatal编程技术网

Solr 如何根据分布获得结果?

Solr 如何根据分布获得结果?,solr,distribution,Solr,Distribution,solr中有没有一种方法可以根据某个索引字段的某些分布来获得结果 例如,假设我有一个图书目录,其中包含概要、出版年份和流派 我想建立一个查询,根据synosis偏好最近出版的书籍,返回最相关的结果。然而,在最终结果中(比如说1000),我希望根据一些给定的分布情况,尽可能紧密地分布该类型。例如:50%是科幻小说,25%是非小说,10%是政治,等等 我知道我可以得到一个大的结果集,并进行某种加权水库采样,以获得solr之外的最后1000本书,但我正在寻找一个仅适用于solr的解决方案 这可能吗?如

solr中有没有一种方法可以根据某个索引字段的某些分布来获得结果

例如,假设我有一个图书目录,其中包含
概要
出版年份
流派

我想建立一个查询,根据
synosis
偏好最近出版的书籍,返回最相关的结果。然而,在最终结果中(比如说1000),我希望根据一些给定的分布情况,尽可能紧密地分布该类型。例如:50%是科幻小说,25%是非小说,10%是政治,等等

我知道我可以得到一个大的结果集,并进行某种加权水库采样,以获得solr之外的最后1000本书,但我正在寻找一个仅适用于solr的解决方案


这可能吗?如果可能,如何实现?

虽然您无法插入发行版,但您可以使用或为每个流派获得n个结果。然后忽略返回的高于该组阈值的任何结果

您必须将每组的文档数设置为总点击数分布中的最大存储桶大小,即上面示例中的500。这可以给你一个非常大的文档集来处理,所以我会尽量让返回的pr.genre的总数至少在开始时保持较小


通过扩展上述两个功能中的任何一个,并添加您自己的代码来限制每种类型收集的文档数量,可能有一些方法可以使组大小更加动态。

感谢您的回复@matslindh!我曾想过使用“结果分组”功能来获得每种类型的前N个结果,然后根据solr之外的所需数字进行过滤。正如你提到的,结果的数量可能很高,我有点担心这种方法的性能。“折叠和扩展”功能将如何进入您提出的解决方案中?