【问题标题】:Beyond SOUNDEX & DIFFERENCE - SQL Server超越 SOUNDEX 和差异 - SQL Server
【发布时间】:2017-04-13 09:54:18
【问题描述】:

我正在使用SOUNDEX & DIFFERENCE 函数对表格中的数据进行一些分析。

但此功能在以下类型的数据中失败。 ITEM TYPEITEM SIZE 完全不同。

SELECT SOUNDEX('ITEM TYPE'), SOUNDEX('ITEM SIZE')

op:-

I350    I350

For DIFFERENCE op: - 4

我了解人类大脑所做的所有分析都无法编码​​,但我还是想问一下,SQL Server 中是否还有其他功能可以帮助我进行下一级分析?

【问题讨论】:

  • SOUNDEX 不仅仅是 SQL Server 开发人员编造的,它是一个“众所周知的”function
  • 您可以尝试查看 Jaro Winkler 算法,例如sqlservercentral.com/articles/Fuzzy+Match/65702
  • @Damien_The_Unbeliever,这不是我关心的答案:(
  • 您可能会发现这很有帮助:archives.gov/research/census/soundex.html
  • 您正在使用函数进行分析。这可能是您可以在这里做出的最通用的陈述。你有什么顾虑? soundex(本质上是一种散列算法)为两个不同的输入返回相同的值?哈希表现出这种行为。

标签: sql sql-server analysis text-analysis


【解决方案1】:

您可以使用算法,例如Damerau–Levenshtein distance

两个词之间的 Damerau-Levenshtein 距离是最小的 操作数(包括插入、删除或 单个字符的替换,或两个相邻字符的换位 字符)将一个单词变为另一个单词。

有 T-SQL 实现,例如this one by Steve Hatchett。 或者,您可以使用an implementation in C#,编译一个 DLL 并将其加载到 SQL CLR。编译的版本应该更快。

有关将 CLR 程序集加载到 SQL @CLR Assembly C# inside SQL Server 的更多信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-17
    • 2023-03-18
    • 2018-05-09
    • 1970-01-01
    • 2010-09-05
    • 1970-01-01
    • 1970-01-01
    • 2017-05-19
    相关资源
    最近更新 更多