Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
<img src="//i.stack.imgur.com/RUiNP.png" height="16" width="18" alt="" class="sponsor tag img">elasticsearch 模糊查询中返回不同值的搜索-Elasticsearch_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch_Lucene_Kibana - Fatal编程技术网 elasticsearch 模糊查询中返回不同值的搜索-Elasticsearch,elasticsearch,lucene,kibana,elasticsearch,Lucene,Kibana" /> elasticsearch 模糊查询中返回不同值的搜索-Elasticsearch,elasticsearch,lucene,kibana,elasticsearch,Lucene,Kibana" />

elasticsearch 模糊查询中返回不同值的搜索-Elasticsearch

elasticsearch 模糊查询中返回不同值的搜索-Elasticsearch,elasticsearch,lucene,kibana,elasticsearch,Lucene,Kibana,我有一个Elasticsearch模糊查询,如下所示: GET /resume/candidate/_search { "query": { "fuzzy" : { "name" : { "value": "Tam", "fuzziness" : 2, "max_expansions": 50 } } } } 我的索引中有汤姆、罗伊和麦

我有一个Elasticsearch模糊查询,如下所示:

GET /resume/candidate/_search
{
    "query": {
       "fuzzy" : {  "name" : {
                    "value": "Tam",
                    "fuzziness" :     2,
                    "max_expansions": 50 }
    }
}
}
我的索引中有汤姆、罗伊和麦克斯韦的名字。Tom的名字根据请求匹配,但Roy的名字也会被返回。这是怎么发生的? 全名如下:

洛夫乔伊三世

汤姆·阿特威尔

此外,如果我将模糊度设置为1,则不会得到任何结果。汤姆不应该被匹配,因为只有一个字符是不同的吗

映射:

{
  "resume": {
    "aliases": {},
    "mappings": {
      "candidate": {
        "properties": {
          "name": {
            "type": "text"
          }
    }
}
}
}
我也有一个分析器,但它不用于名称字段

分析仪:

"analysis": {
          "analyzer": {
            "case_insensitive": {
              "filter": [
                "lowercase"
              ],
              "tokenizer": "keyword"
            }
          }
        }
“Tam”不是与“roy”的模糊匹配,而是与中间首字母“m”的匹配,其编辑距离为2

在编辑距离为1的“tom”上没有得到结果的原因是,在分析索引名称(因此小写)时,查询不是。您可以将查询小写,也可以使用将被分析的:

"query": {
  "match": {
    "name": {
      "query":     "Tam",
      "fuzziness": "AUTO"
    }
  }
}
“Tam”不是与“roy”的模糊匹配,而是与中间首字母“m”的匹配,其编辑距离为2

在编辑距离为1的“tom”上没有得到结果的原因是,在分析索引名称(因此小写)时,查询不是。您可以将查询小写,也可以使用将被分析的:

"query": {
  "match": {
    "name": {
      "query":     "Tam",
      "fuzziness": "AUTO"
    }
  }
}

是的,谭应该比赛,罗伊不应该。我认为这与分析
name
属性的方式有关。你能提供你的地图吗?@MohammadMazraeh我已经添加了它们。您现在可以看一下吗?您已经定义了
不区分大小写的
,但尚未将其添加到映射中。@MohammadMazraeh,将在我稍后定义的字段中使用。是的,Tam应该匹配,Roy不应该匹配。我认为这与分析
name
属性的方式有关。你能提供你的地图吗?@MohammadMazraeh我已经添加了它们。现在可以看一下吗?您已经定义了
不区分大小写的
,但还没有将其添加到映射中。@MohammadMazraeh,它将在我稍后定义的字段中使用。