Algorithm 在大量URL中检测重复网页

Algorithm 在大量URL中检测重复网页,algorithm,data-structures,web,architecture,search-engine,Algorithm,Data Structures,Web,Architecture,Search Engine,引用 谷歌如何检测那些完全重复的网页或文档?对谷歌使用的算法有什么想法吗?可能的解决方案 精确方法 1) 蛮力:将每个新页面与所有访问过的页面进行比较(速度非常慢且效率低下) 2) 计算每个访问页面(md5、sha1)的哈希值,将哈希值存储在数据库中,并在数据库中查找每个新页面的哈希值 3) 信息检索标准布尔模型(BIR) ……许多其他可能的方法 近似精确法 1) 模糊散列 2) 潜在语义索引 ..根据: 谷歌在2006年[10]进行了大规模评估,以 比较Minhash和Simhash[11]算

引用

谷歌如何检测那些完全重复的网页或文档?对谷歌使用的算法有什么想法吗?

可能的解决方案

精确方法

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

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

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

……许多其他可能的方法

近似精确法

1) 模糊散列

2) 潜在语义索引

..

根据:

谷歌在2006年[10]进行了大规模评估,以 比较Minhash和Simhash[11]算法的性能。2007年 谷歌报告说,它使用Simhash对web进行重复检测 爬行[12]并为谷歌新闻使用Minhash和LSH 个性化

搜索Simhash将显示此页面:

其中引用了谷歌员工撰写的一篇论文:

摘要:

几乎重复的web文档非常丰富。这两份文件各不相同 在展示广告的非常小的一部分中, 例如这种差异与网络搜索无关。所以 如果网络爬虫能够评估新的 已爬网网页几乎与以前爬网的网页重复 或者不是。在开发一个近似重复检测系统的过程中 对于一个数十亿页的存储库,我们进行了两项研究 贡献。首先,我们证明了Charikar的指纹 这种技术适合于这个目标。其次,我们提出了一个 识别现有f位指纹的算法技术 对于较小的指纹,在最多k位位置与给定指纹不同 K我们的技术对于两种在线查询(单个查询)都很有用 指纹)和所有批处理查询(多个指纹)。 对真实数据的实验评估证实了该方法的实用性 我们的设计

另一份Simhash文件:


为每个页面存储一个哈希值。如果哈希相等,比较内容。如何计算每个页面的哈希值。基于页面大小、页面内容?由于需要读取页面进行索引,您还可以轻松地基于内容计算哈希。大小会导致太多的误报检测。还有什么其他的哈希值计算方法?与上述两种情况类似,sipest,也可能是fasted,将是一个64位的值,它是所有8字节块的
xor
。(当然也可以使用64位以外的其他大小)我不会使用md5或sha1,因为它们的计算量很大,我们不需要这些的加密功能。一个简单得多、计算速度更快的散列也可以完成这项工作。特别是,谷歌可以根据他们已经索引的搜索词构建一个散列。
"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 . . . "