2012-12-10 47 views
3

我正在使用通配符查詢搜索名稱它工作正常但是,當我們搜索ascii字符時,它不能很好地工作 像用戶搜索「Hélè*」,它無法搜索。elasticsearch通配符查詢與ascii摺疊

請注意,我已經創建了在名稱字段上執行ascii摺疊和小寫字母的分析器。

當我們在query_string中進行搜索時,它的工作正常。這是否意味着通配符不分析ascii摺疊和查詢字符串呢? 如果是的話有沒有辦法用ascii實現通配符?

任何幫助將不勝感激。

謝謝, 穆赫辛

+0

如果你想得到一些幫助,你應該添加一些細節到你的問題。你的映射,什麼有效,什麼不完全。 – javanna

回答

5

嘗試使用field查詢,並將analyze_wildcard設置爲true

默認情況下,elasticsearch不會嘗試分析通配符查詢中的文本,只會爲某些查詢降低文本。因此,您的查詢正在搜索以hélè開頭的所有術語,並且由於ascii摺疊篩選器,索引中沒有這樣的術語。

0

Solr中有一個ReversedWildcardFilterFactory,它是在索引時間使用。如果查詢包含通配符時使用它,則不會將其轉換爲ASCII,否則將使用ASCII碼進行轉換和搜索。你可以在ASCIIFoldingFilterFactory之後定義它。

我不知道在Lucene中存在類似的東西,但是您可以通過查看它的source code來編寫FilterFactory。

你也可以找到this document有用。