solr - 如何根据分布得到结果?

标签 solr distribution

solr 有没有办法根据索引字段之一的某些分布来获得结果?

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

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

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

这是可能的,如果是,如何?

最佳答案

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

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

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

关于solr - 如何根据分布得到结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47349656/

相关文章:

java - OpenNLP 无法与 SOLR 一起使用

java - SolrJ 支持 MoreLikeThisHandler 吗?

c# - 这些库可以与我的 C# 应用程序一起分发吗?

python - 抛一枚硬币 100 次并计算正面朝上的次数。重复此模拟 10**5 次

linux - Solr 或其他选择

ruby-on-rails - 使用 sunspot solr 获取相关搜索查询

c# - Solr 的 Sitecore (ContentSearch) SeachMaxResults 可以在运行时重新定义吗?

python - 对于相关分布采样,是否有 scipy _norm_pdf 的快速替代方案?

java - 如何在 Java 中转移分布中的数据

ios - Xcode 4/iOS如何为另一家公司在App Store中分发应用程序?