获得稳定的SOLR分数

获得稳定的SOLR分数,solr,lucene,Solr,Lucene,我对SOLR核心运行查询,并使用过滤器限制结果 比如fq:{!frange l=0.7}查询($q)。我知道SOLR的分数并不是很高 有绝对意义,但0.7(只是一个示例)是计算出来的 基于用户输入和一些启发式算法,效果很好 问题在于:我更新了很多核心文档。 更新的字段只是元数据字段,与 以上搜索。但由于更新在内部是删除+插入,IDF 而doc计数会发生变化。计算出的分数也是如此。突然我的 查询返回不同的结果 正如尤尼克向我解释的那样,这种行为是故意的。所以我的问题是:最简单的是什么 以及保持分数

我对SOLR核心运行查询,并使用过滤器限制结果 比如
fq:{!frange l=0.7}查询($q)
。我知道SOLR的分数并不是很高 有绝对意义,但0.7(只是一个示例)是计算出来的 基于用户输入和一些启发式算法,效果很好

问题在于:我更新了很多核心文档。 更新的字段只是元数据字段,与 以上搜索。但由于更新在内部是删除+插入,IDF 而doc计数会发生变化。计算出的分数也是如此。突然我的 查询返回不同的结果

正如尤尼克向我解释的那样,这种行为是故意的。所以我的问题是:最简单的是什么 以及保持分数和查询输出稳定的最小方法

每次提交后运行优化应该可以解决问题,但我
想知道是否有更简单、更便宜的方法。

您确实需要运行优化。优化索引时,solr会清理所有尚未指向的文档,并使查询稳定。发生这种情况的原因是,在文档更新的所有时间内,构建此元数据信息的成本都很高。因为这个solr,所以只需在optimize上执行此操作。有一个很好的方法来看看你的指数是稳定还是不稳定。。。当您访问Solr API时,您可以看到
Num Docs
Max Doc
信息。如果
Max Doc
大于
Num Docs
则表明您有一些旧产品影响相关性计算。优化索引使这两个数字再次相等。如果这些数字相等,您可以相信IDF计算正确