【问题标题】:How to get results according to distribution?如何根据分布得到结果?
【发布时间】:2018-05-01 04:07:33
【问题描述】:

solr 中有没有办法根据某个索引字段的某种分布来获取结果?

例如,假设我有一个包含字段synopsispublication_yeargenre 的书籍目录。

我想构建一个查询,根据synopsis 返回最相关的结果,支持最近出版的书籍。但是,在最终结果(比如说 1000 个)中,我希望根据某个给定的分布尽可能接近地分布该流派。例如:50% 科幻、25% 非小说、10% 政治等等。

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

这可能吗?如果可以,怎么做?

【问题讨论】:

    标签: solr distribution


    【解决方案1】:

    虽然您无法插入您的发行版,但您可以使用 Collapse and ExpandResult Grouping 为每种类型获取 n 个结果。然后,您忽略返回的任何高于该组阈值的结果。

    您必须将每个组的文档数设置为命中总数分布中的最大存储桶大小,即上面示例中的 500。这可以为您提供大量文档供您使用,因此我会尽量保留返回的总数。至少一开始流派相当小。

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

    【讨论】:

    • 感谢您的回复@matslindh!我曾想过使用“结果分组”功能来获取每种类型的前 N ​​个结果,然后根据 solr 之外的所需数字过滤它们。正如您所提到的,结果的数量可能很高,我有点担心这种方法的性能。 “折叠和展开”功能将如何在您提出的解决方案中到位?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-19
    • 2022-08-15
    • 2011-10-24
    • 2022-09-23
    • 1970-01-01
    相关资源
    最近更新 更多