如何在SOLR中强制执行稳定的结果分数?通过定义固定的docFreq?

时间:2015-11-10 21:46:36

标签: solr lucene tf-idf

我们有以下用例,这要求我们保持SOLR中的结果分数稳定:

  • 从1000万份文件的核心开始。
  • 针对此核心运行某些查询。我知道分数没有绝对意义,但我们有办法为每个特定查询定义一个截止值。它可能是3.14或0.00001,但我们只是采用分数较高的文档。到目前为止,此工作正常。
  • 现在我们将更多的100k文档添加到核心。
  • 我们再次运行相同的查询。由于docFreq中的更改,我们获得最小的更改结果分数。所以一些" old"的得分? docs可以高于或低于保存的阈值。也就是说,我们想要摆脱它。

我们评估了几个选项,但没有成功。我们的想法是用固定值覆盖doc频率。使用自定义相似性实现是不可能的,因为它太晚了"晚了"进行中。 docFreq的检索与IndexReader耦合,我没有看到覆盖某些东西的方法。最后一个选项可能是入侵分发idf缓存,即具有https://lucene.apache.org/solr/5_1_0/solr-core/org/apache/solr/search/stats/package-tree.html的自定义实现。我还没弄明白如何做到这一点以及缓存如何/在哪里与查询交互。

但主要目的是,即使添加新文档,也要保持结果分数稳定。任何暗示都会非常感激!

0 个答案:

没有答案