自顶一下
200万的数据,有这问的功夫,随便写两句代码,电脑都运行完去重了,不需要任何算法。
我现在是有算法的,simhash判重后,还不够精确,还想再精确一点,所以在寻求更好的方法
200万数据量太小了,真不太需要什么算法。
最简单做法就是一致性哈希,相同的哈希值过滤掉就行了。具体一致性哈希算法到底是啥,去网上查查,很多算法,随便整一个就行了。
我又仔细看了一下你的提问,我觉得你可能有点笔误,我觉得你想问的问题应该是,你目前已经可以通过Url地址去重了,但是去重结果发现,有一些数据,他的大部分其他字段都一样,但是Url不同,你希望是将这样的数据也去掉。
具体算法啥的我也不懂,我个你一个参考方向,你可以试试。这个方法是我五年前用来去重企业名称用的,你看看合不合适你用。
简单做法就是将列对齐,一致性哈希这些字段,只保留第一列id。将结果放入二维数组中。
如这样的结构array[id][字段1][字段2][字段3][字段4]...,这里除了id以外,其他都是存放hashcode。
这样处理的好处就是你可以按任意列对整个数组进行排序,比如,你可以按照第2、第3、列来排序,也可以按照第3,第4列,第5列来排序。下面就简单了,只要遍历就知道那些有重,哪些没有。然后再筛出这些id,关联查询就行了。
速度不用担心,我试过了普通机器,200万的数组,很快。
具体排序方法,你去网上搜一下,是可以找到的。