2010-10-24 27 views
4

我有一個StandardAnalyzer工作,它使用填充HashMap的TermVectorMapper從單個文檔檢索單詞和頻率。如何在Lucene中用連字符索引單詞?

但是,如果使用下面的文字作爲我的文檔中的一個字段,即

addDoc(w, "lucene Lawton-Browne Lucene"); 

頻率在HashMap中返回的字是:

布朗1個 Lucene的2 勞頓1

問題在於「lawton」和「browne」。如果這是一個真正的「雙管」名稱,Lucene是否可以將其識別爲「Lawton-Browne」,其名稱實際上是一個單詞?

我試過的組合:

addDoc(w, "lucene \」Lawton-Browne\」 Lucene"); 

而且單引號,但沒有成功。

謝謝

摩根先生。

回答

0
+0

這可能在queryparsersyntax在字符轉義,但在工作我例如,使用addDoc(w,「lucene Lawton \\ - Browne Lucene」);輸出保持不變。我試過了一個WhitespaceAnalyzer,它給了我一個單詞的名字,但是這並不包含同一個單詞的重複單詞。 – 2010-10-24 21:14:19

+0

我相信一個WhitespaceAnalyzer應該可以正常工作。你能不能在addDoc上發佈一些更多的代碼來澄清這一點? – 2010-10-25 09:33:24

+0

如果我在調用分析器之前將所有的標記設置爲小寫,那麼WhiteSpaceAnalyzer似乎給了我想要的。但是這種類型不允許有一點約束的停止詞。 – 2010-10-25 21:39:18

1

Lucene的文檔如果您仍然希望能夠使用一個停用詞列表,我建議你試試PatternAnalyzer。它允許這樣的列表並且具有預填充的空白模式。

或者您纏繞空白分析儀和做這樣的事情在的TokenStream(字符串字段名,讀者閱讀器),你做這樣的事情:

public TokenStream tokenStream(String fieldName, Reader reader) { 
    TokenStream stream = myWhitespaceAnalyzer.tokenStream(fieldName, Reader); 
    stream = new StopFilter(stream, stopWords); 
    return stream; 
}