2014-03-25 23 views
0

我正在嘗試獲取術語枚舉中每個術語的文檔頻率。但是,對於所有術語,我每次只能獲得文檔頻率的「1」。任何暗示,問題可能是什麼?這是我的代碼:Lucene - 迭代通過TermsEnum for docfreq

Terms terms = reader.getTermVector(docId, field); 
TermsEnum termsEnum = null; 
termsEnum = terms.iterator(termsEnum); 
BytesRef termText = null; 
while((termsEnum.next()) != null){ 
    int docNumbersWithTerm = termsEnum.docfreq(); 
    System.out.println(docNumbersWithTerm); 
} 

回答

0

IndexReader.getTermVector充當如果你有一個單一的文件索引,完全由指定的文件的條款實例。由於在這種情況下只有一個文檔需要考慮,所以您應始終得到docfreq() = 1.您可以使用IndexReader.docFreq方法從完整索引生成docfreq:

int docNumbersWithTerm = reader.docFreq(new Term(termsEnum.term(), field)); 
System.out.println(docNumbersWithTerm);