我已经用Elasticsearch 2.x.x构建了一个自动完成服务。我的自动填充值之一是“3M”。我已将模糊性配置为AUTO,而我的映射只是默认设置:
"mapping": {
"type": "completion",
"analyzer": "simple",
"payloads": false,
"preserve_separators": true,
"preserve_position_increments": true,
"max_input_length": 50
}
基于this documentation的分析器应该简单易行,而Fuzziness AUTO表示 MAX 2拼写错误。
这就是问题所在,尽管1000000和3超出了2个拼写错误的限制,但是只要我键入“1000000M”,它仍会自动完成“3M”。
Elastic知道1000000和3都是数字,并且我正在寻找{a number} M吗?
我希望数字表现为实际的String拼写错误,因为这不是首选的行为。
即使将“模糊性”设置为“零”,它仍然可以将1000000M校正为3M。
最佳答案
解决方案非常简单。我要做的就是将分析仪从simple更改为keyword。但要记住的一件事是,关键字不使用小写分析器,这意味着除非.toLowercase()完全由您自己完成,否则自动完成将区分大小写
关于java - Elasticsearch带数字的字符串的SuggestResponse错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39491013/