Подключение MySQL к Apache Nutch - PullRequest
3 голосов
/ 12 января 2011

Я использую Apache Nutch впервые. Как я могу сохранить данные в базе данных MySQL после сканирования? Я хочу иметь возможность легко использовать данные в других веб-приложениях.

Я нашел вопрос, связанный , но я не совсем понимаю, какую часть кода id можно заменить на коннектор MySQL. Пожалуйста, помогите с кратким примером кода.

Ответы [ 3 ]

3 голосов
/ 13 января 2011

Получить источник от http://mirror.nyi.net/apache//nutch/apache-nutch-1.2-src.zip

Откройте org.apache.nutch.crawl.Crawl класс в вашем редакторе.

переменная поиска Path crawlDb = new Path(dir + "/crawldb");

Переменная даст подсказку о том, где заменить код, чтобы получить собственный класс CustomMySQLCrawl.

Постоянство происходит во время этого вызова: crawlDbTool.update(crawlDb, segs, true, true); // update crawldb Так что есть место, где вы должны сохранить его в базе данных. Возможно, вы захотите интегрировать спящий режим на этом этапе.

1 голос
/ 06 мая 2012

Если вы будете использовать двоичный исполняемый файл Nutch, после сканирования выполните команду -readseg.Это даст вам огромный файл, который содержит весь сырой HTML и другую информацию в нем.После этого вы можете проанализировать и сохранить необходимые данные в базе данных.

Если вы хотите запустить Nutch в Eclipse, вам следует добавить некоторый код в класс Fetcher.

pstatus = output(fit.url, fit.datum, content, status, CrawlDatum.STATUS_FETCH_SUCCESS);
updateStatus(content.getContent().length);

Написать простоевызовите и напишите код базы данных после этих строк в классе Fetcher.Вы можете получить необработанный html следующим образом:

content.getContent();

. Это возвращает представление массива байтов html-файла, преобразует его в String и сохраняет его в вашей базе данных.Вы можете страдать от кодировки символов: Nutch с UTF-8 для настройки Nutch.Тем не менее, проблема обычно возникает из-за кодировки Eclipse.Чтобы преодолеть это, возьмем подстроку контента, которая включает значение «charset» и:

String yourContent = new String(content.getContent, encodingYouFound);

«кодировка» - это строка, поэтому ее будет достаточно извлечь из «контента».Если это невозможно, некоторые сайты могут не иметь атрибута charset, используйте общую кодировку, например UTF-8.

1 голос
/ 25 января 2011

Я вижу 2 варианта: либо вы берете контент из индекса Lucene, созданного Nutch в конце задания на сканирование (я думаю, что он удаляется в Nutch 2.0), либо берете данные из сегмента на каждой итерации.

Если вам достаточно того, что занесено в индекс Lucene, это может быть проще. Но если вам нужно больше, каждый сегмент содержит все, что было извлечено Nutch.

...