simhash是google用来处理海量文本去重的算法。 google出品,你懂的。 simhash最牛逼的一点就是将一个文档,最后转换成一个64位的字节,暂且称之为特征字,然后判断重复只需要判断他们的特征字的距离是不是<n,(根据经验这个n一般取值为3),就可以判断两个文档是否相似。
详细介绍参考:
http://yanyiwu.com/work/2014/01/30/simhash-shi-xian-xiang-jie.html
http://www.lanceyan.com/tech/arch/simhash_hamming_distance_similarity.html
代码实现:
http://my.oschina.net/leejun2005/blog/150086
以下是我根据某位大神的代码修改而来的:
IKAnalyer的jar在http://pan.baidu.com/s/1nu33Q5r
luncene包使用maven下载
其它两个依赖的java文件,自己去实现一下,一个是去除html tag的,另一个是读取文件中的内容的.
1 | package cn.allydata.util; |