在Elasticsearch中使用Levenshtein算法进行模糊字符串匹配
我刚刚开始探索Elasticsearch。我创建了一个文档,如下所示:
curl -XPUT "http://localhost:9200/cities/city/1" -d'{
"name": "Saint Louis"
}'
我现在尝试对Levenshtein距离为5的名称字段进行模糊搜索,如下所示:
curl -XGET "http://localhost:9200/_search " -d'{
"query": {
"fuzzy": {
"name" : {
"value" : "St. Louis",
"fuzziness" : 5
}
}
}
}'
但是它没有返回任何匹配。我希望圣路易斯的记录能归还。我该如何解决我的查询?
谢谢。
回答:
您的查询存在的问题是,最大编辑距离为2。
在上述情况下,您可能想要做的是将St.改为Saint
的同义词,这将与您匹配。当然,这将取决于您的数据,因为St也可能是“街道”。
如果您只想测试模糊搜索,则可以尝试以下示例
curl -XGET "http://localhost:9200/_search " -d'{
"query": {
"fuzzy": {
"name" : {
"value" : "Louiee",
"fuzziness" : 2
}
}
}
}
以上是 在Elasticsearch中使用Levenshtein算法进行模糊字符串匹配 的全部内容, 来源链接: utcz.com/qa/414977.html