我對Lucene很新。我有一個Lucene 4.0索引,我想計算第n個最常用的詞來創建一個停用詞列表。我在Lucene的早期版本中發現了處理這個問題的帖子,例如Get highest frequency terms from Lucene index,但似乎reader.terms()在4.0中已被棄用。從Lucene 4.0索引中獲取最常用的詞
我該如何使用Lucene 4.0來實現這個功能?
謝謝!
我對Lucene很新。我有一個Lucene 4.0索引,我想計算第n個最常用的詞來創建一個停用詞列表。我在Lucene的早期版本中發現了處理這個問題的帖子,例如Get highest frequency terms from Lucene index,但似乎reader.terms()在4.0中已被棄用。從Lucene 4.0索引中獲取最常用的詞
我該如何使用Lucene 4.0來實現這個功能?
謝謝!
您可能想檢查由Lucene貢獻者之一Mike McCandless編寫的New index statistics in Lucene 4.0 article。你要找的可能是TermsEnum.totalTermFreq()
。
以下是使用lucene-misc軟件包中的HighFreqTerms
的示例。你可以在用戶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());
}
其實盧克4.0不適合我的目的,我才明白。無論如何,一個程序化的方法會更好:) –