Heim  >  Artikel  >  Backend-Entwicklung  >  mysql - php根据相似度查找重复数据怎么实现?

mysql - php根据相似度查找重复数据怎么实现?

WBOY
WBOYOriginal
2016-06-06 20:10:321085Durchsuche

有一个具有几千条数据的表,数据库用的mysql,想寻找一个算法根据数据的相似度查找重复的数据,并将其罗列出来,有能提供方法或思路的兄弟们欢迎来凑,先谢过了!

回复内容:

有一个具有几千条数据的表,数据库用的mysql,想寻找一个算法根据数据的相似度查找重复的数据,并将其罗列出来,有能提供方法或思路的兄弟们欢迎来凑,先谢过了!

1.首先,题主应该选一个相似度的计算维度,比如content字段,type字段等;
2.其次,题主考虑一下各个字段的权重,比如type字段必须相同,则让type字段使用typeWeight(例如赋值0.8)作为乘积的因子,而content字段本身是比较长的,所以需要计算出一个hash值,比如使用md5计算出一个32位hash值,然后把这个hash值按照16进制计算得到10进制数,再给一个权重contentWeight(例如0.2),另外再选取一个字段,比如description描述字段,再给一个权重descriptionWeight...
3.最后得到一个当前插入到表中的记录综合hash,typeWeight(contentHashcontentWeight+descriptionHash*descriptionWeight +...),可能会涉及到大整数计算,不过PHP有BCMATH扩展可以使用,最终得到一个数值的综合hash值,保存到数据库的一个字段中,这个东西就可以理解为本条记录的特征值。

看你的需求,方法还是挺多而来,比如说2个字符串的距离,如汉明距离。

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn