在 flex 搜索中,我们如何搜索自由文本。例如,我们在“ test!£!£”!£“test ”等属性之一中具有自由文本数据。
何时,我使用QueryBuilders进行搜索,由于特殊字符,它给出了异常(exception)。
在搜索网上,要知道我们需要使用Lucene的escapeUtils。 QueryParser.escape(searchText)
现在,当我在这种情况下进行精确匹配搜索时,它会忽略这些字符并显示“test”的结果。
请对此提出建议。
最佳答案
您可能正在使用默认映射,即 StandardAnalyzer
。我猜这是在剔除那些甚至没有被索引的字符。您需要确定如何索引文本。您要标记化还是要拥有一个标记?您是否要将这些字符保留在索引中?基于此,您需要选择正确的分析器并通过Put mapping API更新映射。例如,如果要按原样对文本建立索引,则只需将字段配置为"index":"not_analyzed"
,这意味着将为其上下文建立索引,但不会对其应用任何文本分析。
关于elasticsearch - 如何在Elastic search中搜索自由文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13343292/