我們正在使用搜索術語字符串構建一個bool查詢來搜索我們的Lucene索引。我希望這些字符串可以使用標準分析器進行分析,標準分析器是我們用於索引的分析器。例如,foo-bar 1-2-3
應該拆分爲foo
,bar
,1-2-3
,因爲Lucene doc指出連字符會導致數字保持在一起,但是要被標記化的單詞。做這個的最好方式是什麼?使用標準分析器磨砂Lucene搜索術語
目前我正在通過QueryParser運行搜索條件字符串。
QueryParser parser = new QueryParser("", new StandardAnalyzer());
Query query = parser.parse(aSearchTermString);
問題在於插入了引號。例如,foo-bar 1-2-3
變爲"foo bar"
,1-2-3
,它不會返回任何內容,因爲Lucene會將標記爲foo-bar
的標記爲foo
和bar
。
我絕對不想通過刪除引號replace
來破解這種情況,因爲我覺得我可能錯過了某些東西或者做了不正確的事情。
如果Apache文檔聲明StandardAnalyzer不會在連字符上拆分數字,爲什麼StandardAnalyzer會標記'1-2-3'? – theblang
你能指出我對StandardAnalyzer的這種說法嗎?我發現StandardAnalyzer使用StandardTokenizer,它使用[Unicode Standard Annex#29](http://unicode.org/reports/tr29/)。 FWIW,我沒有深入調查過。 – mindas
當然,[這是](http://lucene.apache.org/core/old_versioned_docs/versions/3_0_1/api/all/org/apache/lucene/analysis/standard/StandardTokenizer.html)。 – theblang