Lucene提供了不同的方法来计算idf。基本上,Lucene建议采用术语的文档频率,文档数量,并最终将它们传递给idf计算器,例如ClassicSimilarity提供的计算器。因此,假设我们想知道术语“房屋”的idf。以下是标准过程:
IndexReader reader = //take the reader of your index
Term myTerm = Term(fieldName, "house");
int docFreq = reader.docFreq(myTerm);
int docNumber = reader.docNum();
float idf = new ClassicSimilarity().idf(docFreq, docNumber);
但是,重点是到目前为止,我们还没有计算“ house”的idf !我们刚刚在fieldName 字段中计算了房屋的IDF!
那如果我们想计算idf而不考虑字段怎么办?
是的,我知道我可以循环查看集合中的每个文档,并自行计算,但是我希望Lucene提供一些内置的方法。