2013-02-27 68 views
1

我正在將我的代碼從Lucene 3.5遷移到Lucene 4.1,但我在獲取術語向量時沒有建立索引時遇到了一些問題。在lucene中沒有索引的計算術語向量4

問題是,給定一個文本字符串和Analyzer,我需要計算術語向量(技術上,找到術語及其頻率tf)。顯然,可以通過編寫索引(使用IndexWriter)然後再讀回(使用IndexReader)來實現,但我認爲這會很昂貴。此外,我不需要文檔頻率(df)。因此,我認爲無索引解決方案是適合的。

在Lucene 2和3中,用於上述目的的一種簡單技術是使用QueryTermVector,它擴展了TermFreqVector並且具有一個構造函數,它帶有一個字符串和一個分析器。不幸的是,QueryTermVector(與TermFreqVector一起)已經在Lucene 4中被移除,並且移植文檔似乎沒有提及QueryTermVector的任何內容。

在Lucene 4中你有解決這個問題的方法嗎?非常感謝你。

回答

0

如果您只需要知道術語/頻率,您可以直接從分析儀獲得單個令牌(可以通過計算TF來獲得TF,例如通過使用Map或Multiset)。

這是你如何在Lucene的4.0做到這一點:

TokenStream ts = analyzer.tokenStream(field, new StringReader(text)); 
CharTermAttribute charTermAttribute = ts.addAttribute(CharTermAttribute.class); 


while (ts.incrementToken()) { 
    String term = charTermAttribute.toString(); 
    //term contains your token 
} 
+0

這正是我所做的。只希望Lucene 4提供'QueryTermVector'的替代方案。我猜不會 :( – JohnTruong 2013-03-05 04:44:08