我在这里找不到用例的解决方案。
基本上,它非常简单:我需要执行“包含”查询,如SQL like '%...%'
。
我已经看到有一个正则表达式查询,我实际上设法完美地工作,但由于它似乎很难扩展,我正在尝试nGrams。现在,我之前和他们一起玩过,并且知道“他们是如何工作的”,但这种行为并不是我期望的行为。
基本上,我已将我的分析器配置为mingram = 2,maxgram = 20.假设我将一个名为“Christophe”的用户编入索引。我希望查询“Chris”实际匹配,它确实匹配,因为Chris是一个5克的Christophe。问题是,“意大利调味饭”也是如此,因为它被分解为Ngrams,最终“是”是2克的“Christophe”,所以它也匹配。
我需要的是分析器在索引时实际分解nGrams中的索引字段,并将它们与FULL文本查询进行比较。烩饭应该与Risotto,XXXRisottoXXX等匹配,但不能与Risolo或nGrams匹配的东西匹配。
有没有解决方案?
答案 0 :(得分:2)
您需要使用search_analyzer设置来设置不同的索引时间和搜索时间分析器。
来自docs的示例:
"mappings": {
"my_type": {
"properties": {
"text": {
"type": "text",
"analyzer": "autocomplete",
"search_analyzer": "standard"
}
}
}
}