【发布时间】:2019-11-29 23:36:19
【问题描述】:
我正在尝试在 elasticsearch 7.2.0 中对名字和姓氏构建模糊布尔查询。我有一份文件,其中“asim”和“banskota”分别作为名字和姓氏。但是,当我使用“asi”或“asimmm”以及确切的姓氏进行查询时,elasticsearch 不会返回任何结果。但是,当使用确切的名字或“asimm”进行查询时,它会从文档中返回预期的结果。
我还写了一个“模糊”查询而不是“匹配”。我尝试了不同的模糊参数,但结果是一样的。名字和姓氏都被分析了,我查询了'analyzer' API wrt它是如何分析的 “阿西姆”。它使用标准分析器将带有“asim”的文档作为单个标记进行索引。
编辑:事实证明,模糊查询适用于“替换”情况,例如,当使用“asmi”进行查询但不用于删除时,它会返回“asim”的结果。令我惊讶的是,替换中的编辑距离大于删除情况下的编辑距离。当字符串长度较大时,例如姓氏“班斯科塔”,模糊匹配也适用于“删除”情况。我应该怎么做才能使模糊搜索在字符串长度为 4 或 5 的“删除”情况下工作?
fuzzy_body = {"size": 10,
"query":{
"bool":{
"must": [
{
"match":{"FIRST_NAME_N":{'query': 'asi',"fuzziness": "AUTO"}},
},
{
"fuzzy":{"LAST_NAME_N": "banskota"}
}
]
}
}
}
【问题讨论】:
标签: elasticsearch