【问题标题】:SQL - looking to use soundex to correct mispellings [closed]SQL - 希望使用 soundex 来纠正拼写错误 [关闭]
【发布时间】:2015-04-30 18:14:19
【问题描述】:

我希望以某种方式使用 soundex 来标准化我的数据,因为有时某个列中会出现拼写错误。

例如,我有一列“City”,数据将以“Denver”、“Denver CO”或 Denvr 的形式出现。

有没有办法让“Denver”的所有变体自动更正为“Denver”?

【问题讨论】:

  • Soundex 是一个非常适合大多数文本的匹配工具。
  • 您希望标准化您的数据。考虑好莱坞。好莱坞是一座城市,但它是一座虚荣的城市。首选城市是洛杉矶,但邮局将运送到好莱坞。没有什么可以标准化。
  • @billinkc 我真的不需要它很聪明,它只需要在几个字符消失时找到正确的匹配项。
  • 原生 SSIS 方法是使用模糊查找。在幕后,它可能会使用高级匹配算法,如 Levenstein 距离、ngram 分析等。假设您有一组已知值,Fuzzy Lookup 将尝试根据您对精度的容忍度进行匹配。它企业版功能,但在尝试实施之前请注意这一点。在 VS 中可以正常工作,因为它已获得许可,但在标准版和我 认为 BI 版 中会失败

标签: sql sql-server sql-server-2008 ssis views


【解决方案1】:

如果您希望 ALL 变体匹配特定短语,我宁愿使用 string-distance 函数,而不是 soundex

最简单的是Levenstein distanceand here's an example implementation in T-SQL

Levenstain distance 衡量需要对一个字符串执行多少次编辑才能获得第二个字符串。此功能经常用于所谓的模糊搜索,您希望获得相似的结果,而不是完全匹配您的搜索条件。

另外,由于您使用的是 MS SQL Server,我会考虑使用Data Quality Services 来清理数据库的内容。

【讨论】:

  • 抱歉,我不太确定这是如何工作的。我想我需要某种视图来处理这些数据,输出是更正后的“城市”。我要创建一个包含此代码的视图吗?
  • 对于表中的每个值,您都需要查询其他行的相似性。然后你需要决定用哪种方法来清理它。 Levenstein 算法只是一个工具,如何使用它取决于您。如果要清理整个数据库,请认真考虑改用 DQS。
  • 这个功能真的帮我改正了吗?如果有意义的话,我需要一些东西来实际进行更正。
  • 函数返回两个字符串之间的编辑距离。它不会更改数据。由您决定字符串的不同程度是否仍将它们视为“匹配”。您需要自己运行 UPDATE。我想如果手动完成,您想要做的事情将需要大量编码。尝试了解更多有关数据质量工具的信息。您的问题有解决方案 - 开源和商业。 DQS 已经是 SQL Server 的一部分。
【解决方案2】:

您可能会研究 MAster Data Management。我认为 2008 年有一些东西可以用于该领域。否则你需要升级才能使用它。

【讨论】:

    【解决方案3】:

    如果这专门用于地址信息 - 有一些第三方插件会进行地址查找 - 这可能是清理数据的更好方法。我成功使用了CozyRoc Address lookup

    【讨论】:

    • 只要是城市列即可。字面上只需要:当 City = 'Denvr' 时,设置为 'Denver' 但对于许多拼写错误的情况。
    猜你喜欢
    • 1970-01-01
    • 2011-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-02
    • 2012-05-30
    • 1970-01-01
    相关资源
    最近更新 更多