solr 有没有办法根据索引字段之一的某些分布来获得结果?
例如,假设我有一个包含字段 synopsis
的书籍目录。 , publication_year
和 genre
.
我想构建一个查询,根据 synopsis
返回最相关的结果。偏爱最近出版的书籍。但是,在最终结果中(假设为 1000),我希望根据某些给定的分布尽可能接近地分布该类型。例如:50% 科幻小说、25% 非小说、10% 政治等等。
我知道我可以得到一个很大的结果集并进行某种加权的水库采样以获得 solr 之外的最后 1000 本书,但我正在寻找一种仅适用于 solr 的解决方案。
这是可能的,如果是,如何?
最佳答案
虽然您将无法插入您的发行版,但您可以使用 Collapse and Expand或 Result Grouping为每个流派获得 n 个结果。然后,您可以忽略为该组返回的高于阈值的任何结果。
您必须将每个组的文档数设置为总命中数分布中的最大存储桶大小,即上面示例中的 500。这可以为您提供非常大的文档集,因此我会尽量保留返回的总数。至少在开始时类型相当小。
通过扩展上述两个功能中的任何一个并添加您自己的代码来限制每个流派收集的文档数量,可能有某种方法可以使组大小更加动态。
关于solr - 如何根据分布得到结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47349656/