我正在以一种无模式的方式(没有预先映射)设置我的弹性实例,并且该应用程序要求用户能够搜索包含一个单词的字段,该单词可能会或可能不会标记成多个字符串。例如,该字段可以包含单词“ ONETWO”。该规范要求用户应该能够搜索“ ONETWO”,“ ONE”和“ TWO”并检索相同的文档。即使使用自定义令牌生成器,似乎也没有任何简便的方法可以做到这一点(我不认为应该有一种简便的方法来实现这一目标-或根本没有任何方法)。只想确认我的想法。
答案 0 :(得分:2)
使用使用n-gram tokenizer的自定义分析器可以很轻松地满足您的要求,您甚至可以将其传递给小写的令牌过滤器,因此在您的情况下,您的文本甚至是ONETWO
,但是如果用户搜索one
,One
,ONE
,他应该得到结果。尽管为此您需要应用不同的分析仪搜索时间,但请进一步了解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的更多信息,请告诉我是否需要任何信息。