2011-01-12 5 views
3

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

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

+0

Хм, я пробую то же самое, но я думаю, что здесь нет четкого и простого решения. Я просто пытаюсь вызвать искатель nutch для обхода одного домена сразу, и он должен просто сохранить эти данные в базе данных drupal. Индексирование должно выполняться путем solr thru drupal. Это теория, но теперь практика делает меня сумасшедшим. Так вот кто-то, кто хочет поделиться своим вкладом с другими, получит возможность понять рабочий процесс? –

ответ

3

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

org.apache.nutch.crawl.Crawl Открытого класса в редакторе.

Lookup переменная Path crawlDb = new Path(dir + "/crawldb");

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

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

+0

Спасибо, что поделились этим! – Till

1

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

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

1

Если вы используете бинарный исполняемый файл 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, преобразовать его в строку и сохранить его в базу данных. Вам может потребоваться кодировка символов: Nutch with UTF-8 для настройки Nutch. Однако проблема, как правило, связана с кодировкой Eclipse. Чтобы преодолеть это, взять подстроку содержание, которое включает в себя «кодировок» значение и:

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

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