获得稳定的SOLR分数

时间:2015-05-28 15:06:18

标签: solr lucene

我针对SOLR核心运行查询并使用过滤器限制结果 比如fq: {!frange l=0.7 }query($q)。我知道SOLR得分没有 有一个绝对意义,但计算0.7(只是一个例子) 基于用户输入和一些启发式方法,它们运作良好。

问题如下:我在我的核心中更新了不少文档。 更新的字段只是元数据字段,与数据字段无关 以上搜索。但因为更新内部是删除+插入,IDF 和doc计数变化。计算得分也是如此。我突然间 查询返回不同的结果。

正如Yonik向我解释here,这种行为是设计的。所以我的问题是:什么是最简单的 并保持我的查询的分数和输出稳定的最小方法?

每次提交后运行优化应解决问题,但我 想知道是否有更简单,更便宜的东西。

1 个答案:

答案 0 :(得分:1)

你真的需要运行优化。优化索引solr时,清除所有未指向的文档并使查询稳定。发生这种情况是因为构建此元数据信息在文档更新时总是很昂贵。因为这个solr只是在优化时这样做。有一种很好的方法可以查看您的索引是否更稳定......当您访问Solr API时,您可以看到Num DocsMax Doc信息。如果Max Doc大于Num Docs,则表明您有一些影响相关性计算的旧产品。优化索引这两个数字再次相等。如果这些数字相等,您可以信任IDF已正确计算。