我针对SOLR核心运行查询并使用过滤器限制结果
比如fq: {!frange l=0.7 }query($q)
。我知道SOLR得分没有
有一个绝对意义,但计算0.7(只是一个例子)
基于用户输入和一些启发式方法,它们运作良好。
问题如下:我在我的核心中更新了不少文档。 更新的字段只是元数据字段,与数据字段无关 以上搜索。但因为更新内部是删除+插入,IDF 和doc计数变化。计算得分也是如此。我突然间 查询返回不同的结果。
正如Yonik向我解释here,这种行为是设计的。所以我的问题是:什么是最简单的 并保持我的查询的分数和输出稳定的最小方法?
每次提交后运行优化应解决问题,但我 想知道是否有更简单,更便宜的东西。
答案 0 :(得分:1)
你真的需要运行优化。优化索引solr时,清除所有未指向的文档并使查询稳定。发生这种情况是因为构建此元数据信息在文档更新时总是很昂贵。因为这个solr只是在优化时这样做。有一种很好的方法可以查看您的索引是否更稳定......当您访问Solr API时,您可以看到Num Docs
和Max Doc
信息。如果Max Doc
大于Num Docs
,则表明您有一些影响相关性计算的旧产品。优化索引这两个数字再次相等。如果这些数字相等,您可以信任IDF已正确计算。