使用java为lucene 5.2.1索引中的每个单词提取术语频率

时间:2015-08-31 12:41:44

标签: java lucene

如何使用java?

从Lucene 5.2.1索引中提取每个单词的术语频率

我的代码曾经用于以前的Luecene版本不再适用。我认为互联网上的大多数代码都是针对以前版本的Lucene。

1 个答案:

答案 0 :(得分:0)

您可以从IndexReader.totalTermFreq获取给定字词的术语频率,例如:

Term myTerm = new Term("contentfield", "myterm");
long totaltf = myReader.totalTermFreq(myTerm);

如果您想要整合索引中的所有字词并获取每个字词的频率,可以使用MultiFields

Fields fields = MultiFields.getFields(reader);
Iterator<String> fieldsIter = fields.iterator();
while (fieldsIter.hasNext()) {
    String fieldname = fieldsIter.next();
    TermsEnum terms = fields.terms(fieldname).iterator();
    BytesRef term;
    while ((term = terms.next()) != null) {
        System.out.println(fieldname + ":" + term.utf8ToString() + " ttf:" + terms.totalTermFreq());
        //Or whatever else you want to do with it...
    }
}