Elasticsearch documentation中关于模糊性的内容:
自动
根据术语的长度生成编辑距离。可选提供低距离和高距离参数AUTO:[low],[high]。如果未指定,则默认值为3和6,等同于AUTO:3,6表示长度:
0..2 必须完全匹配
3..5 允许进行一次修改
> 5 允许进行两次修改
但是,当我尝试在搜索查询中指定低距离和高距离参数时,结果却不是我期望的。
我正在使用带有以下索引映射的Elasticsearch 6.6.0:
{
"fuzzy_test": {
"mappings": {
"_doc": {
"properties": {
"description": {
"type": "text"
},
"id": {
"type": "keyword"
}
}
}
}
}
}
插入一个简单的文档:
{
"id": "1",
"description": "hello world"
}
以及以下搜索查询:
{
"size": 10,
"timeout": "30s",
"query": {
"match": {
"description": {
"query": "helqo",
"fuzziness": "AUTO:7,10"
}
}
}
}
我认为 fuzziness:AUTO:7,10 意味着对于长度<= 6的输入项,只会返回完全匹配的文档。但是,这是我查询的结果:
{
"took": 1,
"timed_out": false,
"_shards": {
"total": 1,
"successful": 1,
"skipped": 0,
"failed": 0
},
"hits": {
"total": 1,
"max_score": 0.23014566,
"hits": [
{
"_index": "fuzzy_test",
"_type": "_doc",
"_id": "OQtUu2oBABnEwrgM3Ejr",
"_score": 0.23014566,
"_source": {
"id": "1",
"description": "hello world"
}
}
]
}
}
答案 0 :(得分:0)
这很奇怪,但似乎该错误仅存在于Elasticsearch 6.6.0版本中。我已经尝试了6.4.2和6.6.2,它们都可以正常工作。