在solr中是否有办法根据其中一个索引字段的某些分布获得结果?
例如,假设我有一个包含字段synopsis
,publication_year
和genre
的图书目录。
我想构建一个查询,根据synopsis
返回最相关的结果,支持最近出版的书籍。然而,在最终结果中(假设为1000)我希望根据某些给定的分布尽可能地分发类型。例如:50%的科幻小说,25%的非小说,10%的政治等等..
我知道我可以得到一个大的结果集,并做一些加权的水库采样,以获得最终的1000本书在solr之外,但我正在寻找一种只有solr的解决方案。
这是可能的,如果可以,怎么样?
答案 0 :(得分:0)
虽然您无法插入发布内容,但可以使用Collapse and Expand或Result Grouping为每种类型获取n个结果。然后,您将忽略超过该组阈值的任何结果。
您必须将每个组的文档数量设置为总点击数的分配中的最大存储区大小,即上例中的500。这可以为您提供一组非常大的文档,因此我会尝试保留返回的总数。至少在开始时类型相当小。
通过扩展上述两个功能中的任何一个并添加自己的代码来限制每个类型收集的文档数量,可能有某种方法可以使组大小更具动态性。