我有一个 SQL Server 产品表,每个产品都有一个可在我们的网站上公开获得的描述。我想防止或至少在描述与另一个产品的描述过于相似时警告我们的用户。每个产品的描述长度可能会有很大差异。
我想查询描述中包含重复/相似段落/文本块的产品。即字符串 A 有一堆独特的内容,但与字符串 B 共享一个相似/相同的段落。但是,我不确定哪种相似性算法最适合使用:
Levenshtein 距离和Jaro -Winler 距离算法似乎只适用于短字符串。
我不确定最长的公共子序列算法是否很好地考虑了很大的差异。即它似乎忽略了两个字符之间的潜在空间,找到任何相似的组合序列。
模糊散列听起来我正在寻找什么,但我不只是在寻找具有细微差异的重复内容。我还在寻找在独特的文本块中注入带有细微差异的重复内容。而且我不知道如何在 SQL 中实现模糊哈希。SOUNDEX()和DIFFERENCE()似乎使用模糊散列,但对于我的用例来说非常不精确。
理想情况下,相似性 SQL 函数会很快,但我可以将缓存的相似性值存储在另一个表中,并安排一个作业来偶尔更新。
完成此任务的最佳算法/SQL(或 CLR 集成)实现是什么?