По умолчанию Nutch использует класс org.apache.nutch.crawl.MD5Signature
для вычисления дайджеста URL-адреса, этот класс вычисляет дайджест, используя функцию MD5Hash
необработанного двоичного содержимого страницы, если контент не найден, URL используется ,
DeduplicationJob
первые группы выбирают URL-адреса с помощью дайджеста (в вашем случае оба URL-адреса должны иметь одну и ту же подпись / дайджест) и маркируют все URL-адреса как дублированные, кроме тех, которые имеют самый высокий балл, если оба (или более) URL-адресов имеют одинаковый дайджест и одинаковый балл, тогда вместо него используется тот, который имеет самую последнюю временную метку.
В вашем конкретном случае я считаю, что пользовательская реализация org.apache.nutch.crawl.Signature
, которая учитывает оба параметра (URL-адрес и текст / исходный контент), должна решить вашу проблему. Это необходимо, потому что существующие реализации сигнатур MD5Signature
, TextMD5Signature
и TextProfileSignature
будут рассматривать URL только в том случае, если текстовый / необработанный контент не найден для заданного URL-адреса. Тем не менее реализация должна быть довольно простой.
Имейте в виду, что это могло бы генерировать больше дублированных URL-адресов в вашем индексе.
Вы хотите on
, а не where
в последнем операторе sql. С помощью where
он выполняет соединение, а затем применяет предложение where
, тогда как с on
он выполняет соединение относительно условия on
.
> sqldf('select matr.*, one.* from matr left outer join one on one.c1 = matr.c1')
c1 c2 c1 c2
1 a 1 a 1
2 a 1 a 1
3 a 0 a 1
4 b 1 b 1
5 b 1 b 1
6 b 0 b 1
7 b 1 b 1
8 c 0 <NA> <NA>
9 c 0 <NA> <NA>