Dav*_*iac 7 sql-server asp.net algorithm clr similarity
我有一个SQL Server产品表,每个产品都有一个在我们网站上公开的描述.我想防止,或者至少警告我们的用户何时,描述与其他产品的描述太相似.每个产品的描述长度都会有很大差异.
我想查询包含相互之间的重复/相似段落/文本块的描述的产品.即字符串A有一堆独特的内容,但与字符串B共享一个相似/相同的段落.但是,我不确定哪种相似度算法最好用:
该Levenshtein距离和哈罗- Winler距离算法似乎只与短字符串工作.
我不确定最长的常见子序列算法是否能很好地考虑到大的差异.即它似乎忽略了两个字符之间的潜在空间,找到任何类似的组合序列.
模糊散列的声音听起来像我正在寻找的,但我不只是寻找具有微妙差异的重复内容.我也在寻找在独特的文本块中注入细微差异的重复内容.我不知道如何在SQL中实现模糊哈希.SOUNDEX()和DIFFERENCE()似乎使用模糊散列,但对我的用例来说非常不精确.
理想情况下,相似性SQL函数会很快,但我可以将缓存的相似度值存储在另一个表中,并安排作业偶尔更新.
实现此目的的最佳算法/ SQL(或CLR集成)实现是什么?
我最近不得不通过模糊字符串匹配来连接组名称。
我已经尝试了大约 40 种不同的算法,但没有一个算法足够好来做到这一点,尽管组名的书写仅因一些拼写错误、缺少空格以及末尾偶尔添加 _mLF 而有所不同。
因此,如果您尝试类似的事情,我强烈建议您立即停止,并将数据(在我的例子中是 Excel 文件)发送回用户进行更正,就在它所属的地方。
如果您真的只是对比较字符串感兴趣,那么此链接可能正是您所需要的:
http ://anastasiosyal.com/POST/2009/01/11/18.ASPX
我发现 Jaro-Winkler 函数在我的案例中能产生最佳结果,但您可以自己测试一下。
| 归档时间: |
|
| 查看次数: |
8863 次 |
| 最近记录: |