我显然误解了nGram与Elasticsearch一起工作的方式。我希望能够有效地搜索子字符串。这样,我可以输入“大声”并仍然找到“云”之类的词。我将我的nGram标记器设置为min = 2和max = 10。
显然,nGram将搜索词(“大声”)分为“lo”,“ou”,“ud”,“lou”,“oud”和“loud”。在某些情况下,这很好,因为如果我搜索“cloud”,它将找到“louder”。但是,我认为通常这只会使我的用户感到困惑。
有没有办法防止Elasticsearch分解搜索词?我尝试在查询字符串中使用引号,但这似乎不起作用。
最佳答案
您应该为索引和映射中的搜索指定2个单独的分析器,分别称为index_analyzer
和search_analyzer
。索引分析器与搜索分析器相同,但添加了nGram过滤器。
关于elasticsearch - Elasticsearch-关于文档的nGram,但不包括搜索词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23935416/