在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

回到顶部