ElasticSearch-模糊关键字匹配

ElasticSearch-模糊关键字匹配,
Warning: implode(): Invalid arguments passed in /data/phpspider/zhask/webroot/tpl/detail.html on line 45
,,我在寻找一种方法来模糊匹配单词相等的字段 例如,如果我有一个值如下的字段:- foobar foobar number2 barfoo barfoo number2 我用fooba搜索,我只想返回文档foobar,而不是foobar number2 如果我用number2搜索,我不想返回任何内容,因为number2两个值都有两个单词 我知道术语查询不能是模糊的。有什么疑问吗 我正在使用elasticsearch 5.4 谢谢经过两天的努力,我在发布问题20分钟后就解决了这个问题 您需要使用标记

我在寻找一种方法来模糊匹配单词相等的字段

例如,如果我有一个值如下的字段:-

foobar
foobar number2
barfoo
barfoo number2
我用
fooba
搜索,我只想返回文档
foobar
,而不是
foobar number2

如果我用
number2
搜索,我不想返回任何内容,因为
number2
两个值都有两个单词

我知道术语查询不能是模糊的。有什么疑问吗

我正在使用elasticsearch 5.4


谢谢

经过两天的努力,我在发布问题20分钟后就解决了这个问题

您需要使用标记器为字段创建自定义分析器:-

"analyzer": {
   "all_words_analyzer": {
      "filter": [
          "lowercase"
      ],
      "type": "custom",
      "tokenizer": "keyword"
   }
}
然后在字段上设置:-

"term": {
    "type": "text",
    "analyzer": "all_words_analyzer"
}
现在,正常的模糊匹配将如上所述

"query": {
   "fuzzy": {
       term": {
           "value": "fooba"
       }
   }
}