2016-02-08 159 views
0

我很難理解如何在lucene中處理特殊字符。
我的分析沒有停止詞,使特殊字符不會被刪除:lucene查詢特殊字符

CharArraySet stopwords = new CharArraySet(0, true); 
return new GermanAnalyzer(stopwords); 

比我創建這樣的文檔:

doc.add(new TextField("tags", "23", Store.NO)); 
doc.add(new TextField("tags", "Brüder-Grimm-Weg", Store.NO)); 

查詢標籤:布魯德\ -g工作正常,但模糊查詢標籤:brüder\ -g〜不會返回任何東西。當街道的名稱將是Eselgasse查詢標籤:ESEL〜將正常工作。
我利用Lucene 5.3.1

感謝您的幫助!

+0

奇怪的是,當* QueryParser *解析**標籤時:brüder\ -gri **,* Query.toString()*返回**標籤:brud標籤:gri ** – george

回答

0

模糊查詢(以及通配符或正則表達式的查詢)不被QueryParser的分析。

如果您使用的是StandardAnalyzer,例如「Brüder-Grimm-Weg」將被編入索引爲「brüder」,「grimm」和「weg」三個術語。因此,分析後,你有:

  • "tags:brüder\-g" - >tags:brüder tags:g
    這對tags:brüder

  • "tags:brüder\-g~"匹配 - >tags:brüder-g~2
    由於這不是分析,它仍然是一個單一的術語,你沒有匹配,因爲在你的索引中沒有單個詞語,比如「brüder-g」