作者:mobiledu2502907897 | 来源:互联网 | 2023-05-18 21:07
网上搜集到的网页去重策略:1.通过MD5生成电子指纹来判断页面是否改变2.nutch去重策略:nutch中digest是对采集的每一个网页内容的32位哈希值,如果两个网页内容完全
网上搜集到的网页去重策略:
1.通过MD5生成电子指纹来判断页面是否改变
2.nutch去重策略:
nutch中digest是对采集的每一个网页内容的32位哈希值,如果两个网页内容完全一样,它们的digest值肯定会一样,但哪怕其中之一多或少一个空格,它们的digest值就会不一样。所以,我认为,用digest做id是一个非常不错的选择。
如果nutch在两次不同的时间抓某个网页,例如还有新浪首页http://www.sina.com.cn,如果在两次抓取这段时间,首页没有什么变化,nutch计算出的两次抓取的首页的digest肯定是一样的,这样,nutch在第二次向solr进行索引时,发现digest在solr的索引库中已存在(id是唯一的),自然就写不进去。这样,避免了索引库的重复记录。
同时,采用digest作为Id,也避免了一个行业内部网有镜像网站在solr索引库的重复记录。
总之,采用digest作为Id,防止了nutch在向solr索引库写入时写入重复记录的问题,有天然去重功能。
但是,还必须解决一个问题:如果nutch在两次不同的时间抓某个网页,如果这个网页有变化,两次的digest值肯定不同,这样,nutch在向solr索引库update时,会将同一个url(如http://www.sina.com.cn)写入两条记录。那么,在搜索界面键入:新浪,肯定会出现两条新浪网站数据。如此类推,nutch采集了同一url网页n 次,就有可能在solr索引库中有n条相似的记录。这样的情况出现让我很抓狂,陷于困局之中。
其实,这就是对同一个url进行去重的问题。nutch有一个去重的模块org.apache.nutch.indexer.solr.SolrDeleteDuplicates.java,命令为:bin/nutchsolrdedup,分析发现,它是对digest相同的记录进行去重。估计是nutch把url作为solr的主键id,所以没有考虑到对url相同的记录进行去重。代码如下:nutch与起点R3集成之笔记
转自:http://blog.sina.com.cn/s/blog_623584750101eeb4.html