8

我有一个 SQL Server 产品表,每个产品都有一个可在我们的网站上公开获得的描述。我想防止或至少在描述与另一个产品的描述过于相似时警告我们的用户。每个产品的描述长度可能会有很大差异。

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

模糊散列听起来我正在寻找什么,但我不只是在寻找具有细微差异的重复内容。我还在寻找在独特的文本块中注入带有细微差异的重复内容。而且我不知道如何在 SQL 中实现模糊哈希。SOUNDEX()DIFFERENCE()似乎使用模糊散列,但对于我的用例来说非常不精确。

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

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

4

1 回答 1

4

我最近不得不通过模糊字符串匹配来加入组名。
我已经尝试了大约 40 种不同的算法,但没有一个足以做到这一点,即使组名的不同之处仅在于一些拼写错误、缺少空格,并且偶尔在末尾添加了 _mLF。

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

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

我发现 Jaro-Winkler 函数可以在我的案例中产生最佳结果,但您可以自己测试。

于 2013-09-10T05:45:37.053 回答