加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – SQL – 两个不同长度的字符串之间的相似性

发布时间:2020-12-16 04:07:08 所属栏目:asp.Net 来源:网络整理
导读:我有一个SQL Server产品表,每个产品都有我们网站上公开的描述.我想防止,或者至少警告我们的用户何时,描述与其他产品的描述太相似.每个产品的描述长度都会有很大差异. 我想查询包含相互之间的重复/相似段落/文本块的描述的产品.即字符串A有一堆独特的内容,但
我有一个SQL Server产品表,每个产品都有我们网站上公开的描述.我想防止,或者至少警告我们的用户何时,描述与其他产品的描述太相似.每个产品的描述长度都会有很大差异.

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

> Levenshtein distance和Jaro-Winler distance算法似乎只适用于短字符串.
>我不确定longest common subsequence algorithm是否考虑到了很大的差异.即它似乎忽略两个字符之间的潜在空间,找到任何类似的组合序列.

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

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

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

解决方法

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

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

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

我发现Jaro-Winkler函数在我的情况下产生了最好的结果,但你可以为自己测试一下.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读