2017-04-10 59 views
0

我們在我們的代碼中使用Lucene v3.6。我們首先對數據進行索引,然後使用Lucene搜索來搜索術語。使用盧克我已經證實,當我們對像橋本這樣的詞彙進行索引時,它會被索引到我假設的撇號中(因爲當我從獲得的結果中搜索橋本時,我可以確認相應的字段值包含了作爲橋本的撇號,當我搜索橋本氏(甚至在盧克)我不回來了場任何結果。例如Lucene 3.6 +用撇號搜索術語的問題

+names.name:hashimoto (works and returns multiple results some which have Hashimoto's as a term) 
+names.name:hashimoto's (does not work - no results) 

在這兩種情況下,我使用的是StandardAnalyzer它從我的理解應該處理沒有撇號問題

回答

0

看起來您正在使用的是未被分析的查詢通常,查詢時間分析由QueryParser處理如果您沒有使用查詢,您的查詢將不會是nalyzed。如果您手動構建查詢(例如,TermQuery),則假定您已經處理了與分析有關的所有問題,因此該術語將按原樣進行搜索。

+0

在我的代碼中,我使用了StandardAnalyzer。我使用tokenStream方法從StandardAnalyzer獲取標記並使用它們構建查詢。從一些研究,例如http://stackoverflow.com/questions/1190699/storing-words-with-apostrophe-in-lucene-index我明白應該使用StandardAnalyzer原生支持撇號。但似乎並非如此。正如我所提到的,在使用Luke搜索我的索引以及選擇StandardAnalyzer的情況下,這也沒有幫助。 – user1111871