SQL编辑距离:过去您是如何使用SQL处理模糊字符串匹配的?

SQL编辑距离:过去您是如何使用SQL处理模糊字符串匹配的?,sql,sql-server,Sql,Sql Server,我一直想征求大家对这个话题的看法,所以我们来看看: 我的团队刚刚向我提供了我们需要与其他数据库匹配的客户帐户列表,我们面临的主要挑战是,我们的列表是非标准化的,因此我们对相同帐户的调用与数据库中的类似,但不同。例如: My_List.Customers_Name Customers_Database.Customers_Name - - Charles Schwab Charles Schw

我一直想征求大家对这个话题的看法,所以我们来看看:

我的团队刚刚向我提供了我们需要与其他数据库匹配的客户帐户列表,我们面临的主要挑战是,我们的列表是非标准化的,因此我们对相同帐户的调用与数据库中的类似,但不同。例如:

My_List.Customers_Name         Customers_Database.Customers_Name
-                              -
Charles Schwab                 Charles Schwab Corporation
例如,我使用Jaro-Cranker相似性函数和编辑距离来收集相似字符串的列表,然后根据需要手动匹配帐户。我的问题是:

为了减少手动匹配的数量,您对模糊数据匹配的结果应用了哪些规则/过滤器

我指的是如下规则: 如果字符串有超过20个字符和编辑距离0,那么它可能不会是同一个帐户,所以认为它是不匹配的。 我应用的这些规则完全是由我自己制定的,我想知道是否有一些标准的惯例来应用文本字符串模糊匹配,以便只检索有用的结果并减少手动匹配的工作量

如果没有,你能告诉我你的经历和你以前是如何处理的吗


非常感谢

我已经做过几次了。它在很大程度上依赖于数据集,规则每次都会改变

我的过程是:

  • 选择一组随机的样本记录来检查我的规则集-大到足以代表,小到足以目测扫描
  • 创建一个包含“原始”、“匹配”和“信心分数”列的“匹配”表
  • 编写规则,如“insert”或“update”语句,以在“match”表中创建记录
  • 在我的示例数据集上运行规则
  • 评估样本上的匹配项。调整、添加和配置规则
  • 冲洗并重复
“规则”在很大程度上取决于数据集。我通常使用以下方法:

  • 去掉标点符号
  • 应用普通替换(例如,“公司”变为“公司”)
  • 分成几个单独的词;应用10个精确匹配的分数(因此“Charles Schwab”匹配“Charles Schwab Corporation”将为2/3=7分,“HSBC”匹配“HSBC”为1/1=10分
  • 分为单独的单词;从5个单词中选择每个相近匹配的分数(因此“Chls Schwab”匹配“Charles Schwab Corporation”的分数为2/3=3分,“HSBC”匹配“HSCB”的分数为1/1=5分)