将术语搜索为单字符串和多字字符串



我正在以无模式的方式设置我的弹性实例(没有预先映射),应用程序要求用户能够搜索包含单词的字段,该单词可能会也可能不会被标记为多个字符串。例如,该字段可能包含单词"ONETWO"。该规范要求用户应该能够搜索"ONETWO"、"ONE"和"TWO"并检索同一文档。即使使用自定义分词器,似乎也没有任何简单的方法可以做到这一点(而且我认为不应该有简单的方法来做到这一点 - 或者根本没有任何方法)。只是想确认我的想法。

使用使用

n-gram 分词器的自定义分析器非常容易满足您的要求,您甚至可以将其传递给小写标记过滤器,这样在您的情况下,即使是您的文本也被ONETWO但是如果用户搜索oneOneONE他应该得到一个结果。尽管为此您需要应用不同的分析器搜索时间,但 https://www.elastic.co/guide/en/elasticsearch/reference/current/search-analyzer.html 阅读更多相关信息。

有关更多信息,请参阅 https://devticks.com/how-to-improve-your-full-text-search-in-elasticsearch-with-ngram-tokenizer-e346f29f8ddb,如果您需要任何信息,请告诉我。

最新更新