几天前我遇到了这个“问题”。我在索引中运行了match_phrase
查询。一切都如预期,直到我用多个单词名词进行相同的搜索(在我使用单个单词名词之前,例如:大学)。我做了一个拼写错误,搜索没有工作(找不到),如果我删除了一个单词(让我们说拼写正确的单词),搜索工作(找到)。
这里有我做的例子:
设置
PUT index1
{
"mappings": {
"myType": {
"properties": {
"field1": {
"type": "string",
"analyzer": "standard"
}
}
}
}
}
POST index1/myType/1
{
"field1": "Commercial Banks"
}
案例1:单名词搜索
GET index1/myType/_search
{
"query": {
"match": {
"field1": {
"type": "phrase",
"query": "comersial",
"fuzziness": "AUTO"
}
}
}
}
{
"took": 16,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"failed": 0
},
"hits": {
"total": 1,
"max_score": 0.19178303,
"hits": [
{
"_index": "index1",
"_type": "myType",
"_id": "1",
"_score": 0.19178303,
"_source": {
"field1": "Commercial Banks"
}
}
]
}
}
案例2:多名词搜索
GET index1/myType/_search
{
"query": {
"match": {
"field1": {
"type": "phrase",
"query": "comersial banks",
"fuzziness": "AUTO"
}
}
}
}
{
"took": 1,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"failed": 0
},
"hits": {
"total": 0,
"max_score": null,
"hits": []
}
}
那么,在第二种情况下,为什么在执行match_phrase
查询时我找不到文档?有什么我想念的吗?
这些结果只是让我怀疑我所知道的。
我是否错误地使用模糊搜索?我不确定这是不是问题,或者我不理解这种行为。
非常感谢您提前阅读我的问题。我希望你能帮助我。
答案 0 :(得分:2)
短语查询不支持模糊。
目前,ES对此保持沉默,即它允许您指定参数,但不会警告您不支持该参数。存在pull request (#18322)(与issue #7764相关)可以解决此问题。合并到ES 5后,此查询将出错。
在5.0的breaking changes文档中,我们可以看到这不会得到支持:
如果
multi_match
,fuzziness
或cross_fields
类型使用phrase
,则phrase_prefix
查询将失败。对于这些类型的multi_match
之前,此参数未被记录并被静默忽略。