我显然误解了nGram如何与Elasticsearch合作。我希望能够有效地搜索子字符串。这样我就可以输入'响亮'并仍然找到像'云'这样的词。我将我的nGram标记器设置为min = 2和max = 10.
显然,nGram将搜索词('响亮')分成'lo','ou','ud','lou','oud'和'loud'。在某些情况下,这很好,因为如果我搜索“云”,它会发现“更响亮”。但是,我认为通常只会让我的用户感到困惑。
有没有办法阻止Elasticsearch拆分搜索词?我尝试在查询字符串中使用引号,但这似乎不起作用。
答案 0 :(得分:1)
您应在地图中为索引和搜索指定2个单独的分析器,称为index_analyzer
和search_analyzer
。索引分析器与搜索分析器相同,但添加了nGram过滤器。