我正在寻找一种方法来模糊匹配单词相等的字段。
即。如果我有一个像这样的值的字段:
foobar
foobar number2
barfoo
barfoo number2
我用
fooba
搜索,我只想返回文档foobar
而不是foobar number2
如果我使用
number2
搜索,由于两个number2
值均包含2个字,因此我不希望返回任何内容。我知道字词查询不能模糊。有可能通过任何查询吗?
我正在使用Elasticsearch 5.4
谢谢
最佳答案
经过2天的战斗后,我在发布问题20分钟后解决了问题。
您需要使用 keyword
标记生成器为此字段创建一个自定义分析器:-
"analyzer": {
"all_words_analyzer": {
"filter": [
"lowercase"
],
"type": "custom",
"tokenizer": "keyword"
}
}
然后在字段上设置:
"term": {
"type": "text",
"analyzer": "all_words_analyzer"
}
现在正常的模糊匹配将按上述方式工作。
"query": {
"fuzzy": {
term": {
"value": "fooba"
}
}
}
关于elasticsearch - ElasticSearch-模糊关键字匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46685099/