检测大量URL中的重复网页

时间:2013-09-04 13:51:06

标签: algorithm data-structures web architecture search-engine

来自google blogspot的引文,

"In fact, we found even more than 1 trillion individual links, but not all of 
them lead to unique web pages. Many pages have multiple URLs with exactly the same
content or URLs that are auto-generated copies of each other. Even after removing
those exact duplicates . . . "

Google如何检测确切的重复网页或文档?关于Google使用算法的任何想法吗?

2 个答案:

答案 0 :(得分:1)

根据http://en.wikipedia.org/wiki/MinHash

  

谷歌在2006年进行了大规模的评估[10]   比较Minhash和Simhash [11]算法的性能。 2007年   谷歌报道使用Simhash进行网络重复检测   抓取[12]并将Minhash和LSH用于Google新闻   个性化。[13]

搜索Simhash会显示此页面:

https://liangsun.org/posts/a-python-implementation-of-simhash-algorithm/

https://github.com/leonsim/simhash

引用了谷歌员工撰写的论文:Detecting near-duplicates for web crawling

<强>摘要:

  

近乎重复的网络文档非常丰富。两个这样的文件不同   在显示广告的很小一部分中相互之间,   例如。这种差异与网络搜索无关。所以   如果可以评估是否新增,则网络爬虫的质量会提高   已爬网的网页几乎是以前抓取过的网页的副本   或不。在开发近似重复的检测系统的过程中   对于数十亿页的存储库,我们进行了两项研究   贡献。首先,我们展示了Charikar的指纹识别   技术适合这个目标。其次,我们提出一个   用于识别现有f位指纹的算法技术   与最小k个位的给定指纹不同,对于小的   ķ。我们的技术对于在线查询都很有用(单一   指纹)和所有批量查询(多个指纹)。   对实际数据的实验评估证实了实用性   我们的设计。

另一篇Simhash论文:

http://simhash.googlecode.com/svn/trunk/paper/SimHashWithBib.pdf

答案 1 :(得分:0)

可能的解决方案

确切的方法

1)暴力:将每个新页面与所有访问过的页面进行比较(非常慢且效率低下)

2)计算每个访问页面的哈希值(md5,sha1)并将哈希值存储在数据库中并查找数据库中每个新页面的哈希值

3)标准布尔信息检索模型(BIR)

........许多其他可能的方法

接近确切的方法

1)模糊散列

2)潜在语义索引

...