elasticsearch中模糊查询的一些奇怪问题
Some weird problem with fuzzy query in elasticsearch
我在 es 中有一个文档
"_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
的所需记录,但如果我使用 Capital I
进行搜索即如果我的查询是
"query": {
"fuzzy": {
"title": {"value": "Intersteller", "fuzziness": 1}
}
}
}
然后我没有从 db 获取和文档 .. 只是想了解幕后发生的事情
模糊查询不分析文本。大多数模糊查询就像术语查询本身。
在您的情况下 "title"
字段必须使用 standard analyzer。所以 "Intersteller"
被索引为 "intersteller"
。现在,当您对 "intersteller"
执行模糊查询时,您将获得结果,但不会使用 "Intersteller"
要了解更多有关模糊查询的信息,请参阅此elasticsearch blog
最好连同模糊参数一起使用match query
{
"query": {
"match": {
"title": {
"query": "Intersteller",
"fuzziness": "auto"
}
}
}
}
如果你想使用模糊查询,那么你需要增加fuzziness参数,让你的文档匹配
{
"query": {
"fuzzy": {
"title": {
"value": "Intersteller",
"fuzziness": 3
}
}
}
}
我在 es 中有一个文档
"_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
的所需记录,但如果我使用 Capital I
进行搜索即如果我的查询是
"query": {
"fuzzy": {
"title": {"value": "Intersteller", "fuzziness": 1}
}
}
}
然后我没有从 db 获取和文档 .. 只是想了解幕后发生的事情
模糊查询不分析文本。大多数模糊查询就像术语查询本身。
在您的情况下 "title"
字段必须使用 standard analyzer。所以 "Intersteller"
被索引为 "intersteller"
。现在,当您对 "intersteller"
执行模糊查询时,您将获得结果,但不会使用 "Intersteller"
要了解更多有关模糊查询的信息,请参阅此elasticsearch blog
最好连同模糊参数一起使用match query
{
"query": {
"match": {
"title": {
"query": "Intersteller",
"fuzziness": "auto"
}
}
}
}
如果你想使用模糊查询,那么你需要增加fuzziness参数,让你的文档匹配
{
"query": {
"fuzzy": {
"title": {
"value": "Intersteller",
"fuzziness": 3
}
}
}
}