【发布时间】:2012-08-29 21:39:19
【问题描述】:
我希望 Lucene 评分功能不会基于文档的长度产生偏差。这确实是Calculate the score only based on the documents have more occurance of term in lucene的后续问题
我想知道 Field.setOmitNorms(true) 是如何工作的?我看到有两个因素使短文档获得高分:
- “提升”较短的帖子 - 使用 doc.getBoost()
- norm(t,d)定义中的“lengthNorm”
我想知道 - 如果我不想偏向较短的文档,Field.setOmitNorms(true) 是否足够?
【问题讨论】:
-
查看自定义相似度实现(派生自 DefaultSimilarity 并覆盖 LengthNorm、Tf、Idf 和其他用于分数计算的函数),它可能有助于您进一步了解该过程。
-
我们有同样的效果,它与 Field.setOmitNorms(true) 设置相似度为 searcher.setSimilarity(new DefaultSimilarity() { @Override public float tf(float freq) { return 1; } });这关闭了计算术语并考虑文档长度。