我对 Lucene 很陌生。我有一个 Lucene 4.0 索引,我想计算第 n 个最常用的词来创建一个停用词列表。我发现在以前版本的 Lucene 中处理此问题的帖子,例如从 Lucene 索引中获取最高频率术语,但似乎 reader.terms() 在 4.0 中已被弃用。
我如何使用 Lucene 4.0 实现这一点?
谢谢!
我对 Lucene 很陌生。我有一个 Lucene 4.0 索引,我想计算第 n 个最常用的词来创建一个停用词列表。我发现在以前版本的 Lucene 中处理此问题的帖子,例如从 Lucene 索引中获取最高频率术语,但似乎 reader.terms() 在 4.0 中已被弃用。
我如何使用 Lucene 4.0 实现这一点?
谢谢!
您可能想查看由 Lucene 贡献者之一 Mike McCandless 撰写的Lucene 4.0 文章中的新索引统计信息。您正在寻找的可能是TermsEnum.totalTermFreq()
.
这是使用HighFreqTerms
lucene-misc 包的示例。
请注意,HighFreqTerms.TotalTermFreqComparator
如果您想按术语频率排名,您可以使用:
DocFreqComparator cmp = new HighFreqTerms.DocFreqComparator();
TermStats[] highFreqTerms = HighFreqTerms.getHighFreqTerms(reader, n, "text", cmp);
List<String> terms = new ArrayList<>(highFreqTerms.length);
for (TermStats ts : highFreqTerms) {
terms.add(ts.termtext.utf8ToString());
}