2012-11-12 74 views
0

在彈性搜索中,我們如何搜索自由文本。例如,我們在諸如「test!」,「test」之類的屬性之一中具有自由文本數據。如何在彈性搜索中對自由文本進行搜索?

的時候,我做使用QueryBuilders搜索,它提供例外由於特殊字符。

在搜索網頁,來知道,我們需要使用escapeUtils從Lucene的。 QueryParser.escape(searchText)

現在,當我在這種情況下進行完全匹配搜索時,它會忽略這些字符並調出「測試」結果。

請提出這個東西。

回答

2

你可能會使用默認的映射,從而StandardAnalyzer。我想這是刪除那些甚至沒有索引的字符。您需要決定如何爲文字編制索引。你想標記或者你想擁有一個令牌嗎?你想保留這些字符在索引中嗎?基於此,您需要選擇合適的分析儀並通過Put mapping API更新您的映射。例如,如果您想將文本編入索引,則只需將該字段配置爲"index":"not_analyzed",這意味着其上下文將被編入索引,但不會對其應用文本分析。