我在Lucene的Similarity
类public float idf(Term term, Searcher searcher)
方法javadoc中找到了这个:
请注意,使用Searcher.maxDoc()代替IndexReader#numDocs() 因为也使用了Searcher.docFreq(Term),后者是 不准确,Searcher.maxDoc()也是如此,并且方向相同。在 另外,Searcher.maxDoc()的计算效率更高。
这对我来说没有多大意义。这是否与IndexReader中的文档删除有关?
答案 0 :(得分:6)
是的,完全正确。每当文档被删除(或更新,因为Lucene中的更新只是一个删除后跟一个添加),文档将保留在索引中,直到这些段被合并,通常是通过索引优化。搜索已被删除,不会被返回,但它的条款仍将对idf评分产生影响。
LuceneFAQ有一些与此相关的信息,特别是this answer on deletion的最后一段和this addressing maxDoc specifically