在弹性搜索中,我们如何搜索自由文本。例如,我们在“ test!£!£”!£“test ”之类的属性之一中有自由文本数据。
当我使用 QueryBuilders 进行搜索时,由于特殊字符而出现异常。
在搜索网络时,知道我们需要使用来自 Lucene 的 escapeUtils。QueryParser.escape(searchText)
现在,当我在这种情况下进行完全匹配搜索时,它会忽略这些字符并显示“测试”的结果。
请就此提出一些建议。
在弹性搜索中,我们如何搜索自由文本。例如,我们在“ test!£!£”!£“test ”之类的属性之一中有自由文本数据。
当我使用 QueryBuilders 进行搜索时,由于特殊字符而出现异常。
在搜索网络时,知道我们需要使用来自 Lucene 的 escapeUtils。QueryParser.escape(searchText)
现在,当我在这种情况下进行完全匹配搜索时,它会忽略这些字符并显示“测试”的结果。
请就此提出一些建议。
您可能正在使用默认映射,因此StandardAnalyzer
. 我想它正在剥离那些甚至没有被索引的字符。您需要决定如何索引您的文本。你想标记化还是想要一个标记?您想将这些字符保留在索引中吗?基于此,您需要选择正确的分析器并通过Put 映射 API更新您的映射。例如,如果您想按原样索引文本,只需将字段配置为"index":"not_analyzed"
,这意味着将对其上下文进行索引,但不会对其应用文本分析。