【发布时间】:2017-11-14 22:45:27
【问题描述】:
我有一个如下的 Elasticsearch 模糊查询:
GET /resume/candidate/_search
{
"query": {
"fuzzy" : { "name" : {
"value": "Tam",
"fuzziness" : 2,
"max_expansions": 50 }
}
}
}
我的索引中有 Tom、Roy、Maxwell 的名字。根据请求匹配名称 Tom,但也返回名称 Roy。这是怎么回事? 全名是:
罗伊 M 洛夫乔伊三世
汤姆·阿特维尔
另外,如果我将模糊度设置为 1,我不会得到任何结果。不应该匹配 Tom,因为只有 1 个字符不同吗?
映射:
{
"resume": {
"aliases": {},
"mappings": {
"candidate": {
"properties": {
"name": {
"type": "text"
}
}
}
}
}
我也有一个分析器,但在名称字段中没有使用它
分析器:
"analysis": {
"analyzer": {
"case_insensitive": {
"filter": [
"lowercase"
],
"tokenizer": "keyword"
}
}
}
【问题讨论】:
-
是的 Tam 应该匹配,而 Roy 不应该匹配。我认为这与您分析
name属性的方式有关。你能提供你的映射吗? -
@MohammadMazraeh 我已经添加了它们。现在可以看一下吗?
-
您已定义
case_insensitive,但尚未将其添加到映射中。 -
@MohammadMazraeh 这将在我稍后定义的字段中使用。
标签: elasticsearch lucene kibana