比Elasticsearch的模糊查询更少的预期结果

时间:2015-09-11 08:49:59

标签: elasticsearch fuzzy-search

我对弹性搜索模糊查询有一些奇怪的行为,我不知道自己做错了什么。

这些是我的索引中的名字:

  "hits": [
     {
           "name": "bbbb"

           "name": "abab"

           "name": "abbb"

           "name": "aaaa"
        }
     }
  ]

但是这个假设要返回所有四个元素的查询只返回" abab"和" aaaa"。

POST /test/_search?pretty
{
   "size": 10,
   "query": {
      "fuzzy": {
         "name": {
            "value": "aaaa",
            "fuzziness": 4
         }
      }
   }
}

名称字段被映射为字符串类型。作为一个附带问题,将not_analyzed映射设置为字段会影响模糊查询结果吗?

1 个答案:

答案 0 :(得分:2)

基于Elasticsearch's Common Options - Fuzziness documentation末尾引用的Fuzzy Query documentation,对于字符串字段,模糊参数似乎只采用以下值之一:0,1,2,AUTO,0.0 ... 0.1。该部分的最后一部分作为注释:

  

注意:在除此类查询之外的所有API中,允许的最大编辑距离为2。

正如您所观察到的,除此之外的所有内容似乎都被限制在2的编辑距离。这对于Elasticsearch的更高版本来说都是如此,因为0.90的文档有点不同。