【发布时间】:2017-01-09 16:12:56
【问题描述】:
我在这里找不到用例的解决方案。
基本上,这很简单:我需要执行“包含”查询,例如 SQL like '%...%'。
我已经看到有一个正则表达式查询,我实际上设法让它完美地工作,但由于它的扩展性似乎很差,我正在尝试 nGrams。现在,我以前玩过它们并且知道“它们是如何工作的”,但这种行为并不是我所期望的。
基本上,我已将分析器配置为 mingram = 2,maxgram = 20。假设我索引了一个名为“Christophe”的用户。我希望查询“Chris”真正匹配,因为 Chris 是 5 克的 Christophe。问题是,“Risotto”也匹配,因为它被分解成 Ngram,最终“is”是 2-gram 的“Christophe”,所以它也匹配。
我需要的是分析器在索引时实际分解 nGrams 中的索引字段,并将它们与全文查询进行比较。 Risotto 应该匹配 Risotto、XXXRisottoXXX 等,但不是 Risolo 或 nGram 匹配的东西。
有什么解决办法吗?
【问题讨论】:
-
这个答案可能会有所帮助:stackoverflow.com/questions/41543223/…(提示您需要为搜索时间设置
standard分析器。)
标签: elasticsearch n-gram