如何使用java?
从Lucene 5.2.1索引中提取每个单词的术语频率我的代码曾经用于以前的Luecene版本不再适用。我认为互联网上的大多数代码都是针对以前版本的Lucene。
答案 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...
}
}