针对具有相同内容和不同 URI 的网站,nutch 1.11 中的重复数据删除
Deduplication in nutch 1.11 for sites having same content and different URI
我正在使用 nutch 来爬取内部网站。我遇到了一个场景,其中 2 个站点具有相同的内容(使用记事本 ++ 比较两个站点的视图源)但 URI 不同。
例如
http://site_name.domain_name.com/a/b/c/index.html
http://site_name.domain_name.com/x/y/z/index.html
Nutch 正在索引其中一个,但不是两者。
如何改变 nutch 的这种行为并为两个 URL 编制索引?
默认Nutch使用org.apache.nutch.crawl.MD5Signature
class来计算一个URL的摘要,这个class使用MD5Hash
函数计算摘要页面的原始二进制内容,如果没有找到内容则使用 URL。
DeduplicationJob
第一组由摘要提取 URLs(在你的情况下,两个 URLs 应该具有相同的 signature/digest)并标记所有 URLs 为重复,除了得分最高的那个,如果两个(或更多)URLs 具有相同的摘要和相同的分数,则使用具有最新时间戳的那个。
在您的特定情况下,我认为 org.apache.nutch.crawl.Signature
的自定义实现考虑了 两个 参数(URL 和 text/raw 内容)应该可以解决您的问题。这是必需的,因为现有的签名实现 MD5Signature
、TextMD5Signature
和 TextProfileSignature
将只考虑 URL 如果没有找到给定 [=32] 的 text/raw 内容=].尽管如此,实现应该非常简单。
请记住,这可能会在您的索引中生成更多重复的 URL。
我正在使用 nutch 来爬取内部网站。我遇到了一个场景,其中 2 个站点具有相同的内容(使用记事本 ++ 比较两个站点的视图源)但 URI 不同。 例如
http://site_name.domain_name.com/a/b/c/index.html
http://site_name.domain_name.com/x/y/z/index.html
Nutch 正在索引其中一个,但不是两者。
如何改变 nutch 的这种行为并为两个 URL 编制索引?
默认Nutch使用org.apache.nutch.crawl.MD5Signature
class来计算一个URL的摘要,这个class使用MD5Hash
函数计算摘要页面的原始二进制内容,如果没有找到内容则使用 URL。
DeduplicationJob
第一组由摘要提取 URLs(在你的情况下,两个 URLs 应该具有相同的 signature/digest)并标记所有 URLs 为重复,除了得分最高的那个,如果两个(或更多)URLs 具有相同的摘要和相同的分数,则使用具有最新时间戳的那个。
在您的特定情况下,我认为 org.apache.nutch.crawl.Signature
的自定义实现考虑了 两个 参数(URL 和 text/raw 内容)应该可以解决您的问题。这是必需的,因为现有的签名实现 MD5Signature
、TextMD5Signature
和 TextProfileSignature
将只考虑 URL 如果没有找到给定 [=32] 的 text/raw 内容=].尽管如此,实现应该非常简单。
请记住,这可能会在您的索引中生成更多重复的 URL。