当前位置: 首页 > 面试题库 >

在Elasticsearch中使用Levenshtein算法进行模糊字符串匹配

吕永寿
2023-03-14
问题内容

我刚刚开始探索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
           }

       }
    }
}


 类似资料:
  • fuzzywuzzy是一个非常流行的字符串匹配库。根据库的文档,它提到它使用Levenshtein距离来计算序列之间的差异。但是仔细检查后,我发现它实际上使用了库中的函数。根据文档,该函数使用RatClifg/Obershelp模式匹配算法。 根据定义,Levenshtein距离是将一个字符串转换为另一个字符串所需的最小编辑次数,Ratclifg/Obershelp模式匹配算法计算匹配字符数除以两

  • 本文向大家介绍python fuzzywuzzy模块模糊字符串匹配详细用法,包括了python fuzzywuzzy模块模糊字符串匹配详细用法的使用技巧和注意事项,需要的朋友参考一下 github主页 导入: 1) fuzz.ratio()对位置敏感,全匹配。fuzz.partial_ratio()对位置敏感,搜索匹配。 2) 对字符串s排序。force_ascii:True 或者False。为T

  • 本文向大家介绍Java如何使用elasticsearch进行模糊查询,包括了Java如何使用elasticsearch进行模糊查询的使用技巧和注意事项,需要的朋友参考一下 这篇文章主要介绍了Java如何使用elasticsearch进行模糊查询,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 使用环境上篇文章本人已书写过,需要maven坐标,ES连

  • 问题内容: 我在项目中使用模糊匹配,主要是查找拼写错误和具有相同名称的不同拼写。我需要完全了解elasticsearch的模糊匹配如何工作以及它如何使用标题中提到的2个参数。 据我了解, min_similarity 是查询的字符串与数据库中的字符串匹配的百分比。我找不到有关此值如何计算的确切描述。 据我了解, max_expansions 是应该执行搜索的Levenshtein距离。如果这实际上

  • 我要分析模板字符串: 这是我的语法: 当语法的输入被解析时,模板字符串不再有空格,因为WS- 无关输入''期望{"'} 如何允许解析空格而不是仅在模板字符串中跳过?