SQL - 两个不同长度的字符串之间的相似性

时间:2013-09-04 22:15:54

标签: asp.net sql-server algorithm clr similarity

我有一个SQL Server产品表,每个产品都有一个在我们网站上公开的描述。我想防止,或者至少警告我们的用户何时,描述与其他产品的描述太相似。每个产品的描述长度都会有很大差异。

我想查询包含相互之间的重复/相似段落/文本块的描述的产品。即字符串A有一堆独特的内容,但与字符串B共享一个相似/相同的段落。但是,我不确定哪种相似度算法最好用:

Fuzzy hashing听起来像我正在寻找的,但我不仅正在寻找具有微妙差异的重复内容。我寻找重复内容,并在一个独特的文本块中注入细微的差异。我不知道如何在SQL中实现模糊哈希。 SOUNDEX()DIFFERENCE()似乎使用模糊散列,但对于我的用例非常不精确。

理想情况下,相似性SQL函数会很快,但我可以将缓存的相似度值存储在另一个表中,并安排作业偶尔更新。

实现此目的的最佳算法/ SQL(或CLR集成)实现是什么?

1 个答案:

答案 0 :(得分:3)

我不是最近不得不通过模糊字符串匹配来加入组名 我已经尝试了大约40种不同的算法,但是没有一种能够做到这一点,即使编写的组名仅因拼写错误,缺少空格以及偶尔添加_mLF而有所不同。

因此,如果您尝试类似的事情,我强烈建议您立即停止,并将数据(在我的情况下为Excel文件)发送回用户进行更正,以便进行更正。

如果您真的只是对比较字符串感兴趣,这个链接可能就是您所需要的:
http://anastasiosyal.com/POST/2009/01/11/18.ASPX

我发现Jaro-Winkler功能可以在我的情况下产生最佳效果,但你可以自己测试一下。