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