我正在尝试在elasticsearch 7.2.0中建立一个名字和姓氏的模糊布尔查询。我有一个文档,名字和姓氏分别是"asim“和"banskota”。但是,当我使用"asi“或"asimmm”以及确切的姓氏进行查询时,elasticsearch不返回任何结果。但是,当使用确切的名字或"asimm“进行查询时,它会返回文档中预期的结果。
我还写了一个“模糊”查询,而不是“匹配”。我用不同的模糊参数进行了实验,但结果是相同的。名字和姓氏都会被分析,我询问了“分析器”API wrt是如何分析“asim”的。它使用标准分析器将“asim”作为单个令牌对文档进行索引。
编辑:事实证明,模糊查询适用于‘替换’的情况,例如,当使用'asmi‘查询时,它返回'asim’的结果,但不返回删除的结果。这让我很惊讶,因为替换中的编辑距离比删除中的编辑距离大。当字符串长度较大时,例如姓氏'Banskota',模糊匹配也适用于'deletion‘的情况。我应该怎么做才能使模糊搜索在字符串长度为4或5的'deletion‘情况下工作?
fuzzy_body = {"size": 10,
"query":{
"bool":{
"must": [
{
"match":{"FIRST_NAME_N":{'query': 'asi',"fuzziness": "AUTO"}},
},
{
"fuzzy":{"LAST_NAME_N": "banskota"}
}
]
}
}
}发布于 2019-07-26 06:34:07
结果是,如果name字段被索引为关键字类型,查询将返回带有"AUTO“模糊性的预期结果。
https://stackoverflow.com/questions/57138465
复制相似问题