弹性搜索中模糊查询的一些奇怪问题



我在中有一个文档

"_type": "_doc",
"_id": "109487",
"_score": null,
"_source": {
"id": "109487",
"title": "Interstellar",
"year": 2014,
"genre": [
"Sci-Fi",
"IMAX"
]
},
"sort": [
"Interstellar"
]
}

我正在使用类似的模糊查询进行搜索

{
"query": {
"fuzzy": {
"title": {"value": "intersteller", "fuzziness": 1}
}
}
}

但奇怪的是,如果我在intersteller中用小i搜索,那么我会得到标题为Interstellar的所需记录,但如果我用大写I搜索,即如果我的查询是

"query": {
"fuzzy": {
"title": {"value": "Intersteller", "fuzziness": 1}
}
}
}

那么我不会从数据库获取和文档。。只是想了解幕后发生了什么

模糊查询不分析文本。多数情况下,模糊查询的作用类似于术语查询本身

在您的情况下,"title"字段必须使用标准分析器。因此CCD_ 5被索引为CCD_。现在,当你在"intersteller"上执行模糊查询时,你会得到结果,但"Intersteller"不会

要了解更多关于模糊查询的信息,请参阅这个弹性搜索博客


最好使用匹配查询和模糊性参数

{
"query": {
"match": {
"title": {
"query": "Intersteller",
"fuzziness": "auto"
}
}
}
}

如果你想使用模糊查询,那么你需要增加模糊性参数,以使你的文档匹配

{
"query": {
"fuzzy": {
"title": {
"value": "Intersteller",
"fuzziness": 3
}
}
}
}

最新更新