Индексирование только определенных доменов с помощью Solr и Nutch - PullRequest
0 голосов
/ 22 ноября 2018

Я хочу сканировать веб-сайт с Nutch и индексировать его с помощью Solr.

У меня есть веб-сайт, имеющий следующую структуру:

Домашняя страница: example.com

Документы, которые я хочу проиндексировать: subdomain.example.com/{some_number}.html

Чтобы «обнаружить» все эти документы, я начинаю с example.com/discover, в котором есть список многих документов, которые я хочу.

Итак, что у меня естьсейчас:

В моем regex-urlfilter.txt я настроил сканирование только документов с example.com, и это прекрасно работает

Я индексирую с помощью Solr, и все работает хорошо.Я использую следующую команду:

./$nutch/bin/crawl -i -s $nutch/urls/ $nutch/ 5

Теперь мне нужно ТОЛЬКО индексировать документы в формате: subdomain.example.com/{some_number}.html, игнорируя все остальное (т.е. я нехочу индексировать example.com/discover)

Я полагаю, это делается путем изменения какой-либо конфигурации в Solr, поскольку это часть индексации.

1 Ответ

0 голосов
/ 22 ноября 2018

В этом случае конфигурация может быть выполнена на стороне Nutch.Фильтрация документов перед их отправкой в ​​Solr.

Если вы хотите только «проиндексировать» (т.е. вы хотите получить и проанализировать все ссылки, но сохранить только в Solr те, которые соответствуют регулярному выражению), вы можетеиспользуйте index-jexl-filter .С помощью этого плагина вы можете написать небольшой JEXL-скрипт , чтобы проверить, соответствует ли URL документа вашему регулярному выражению, и если он это сделает, он будет отправлен в Solr.

Сценарий может быть чем-тоlike (настроено в вашем файле nutch-site.xml):

url =~ "^https?:\/\/[a-z]+\.example.com\/(\d+).html"

Если под «индексом» вы действительно имели в виду сканирование только тех URL, которые соответствуют вашему регулярному выражению (если оно не совпадает, оно не будет выбрано илиразбор) затем вы можете использовать тот же regex-urlfilter.txt для определения желаемого формата.Имейте в виду, что при таком подходе вам потребуется снова запустить сканирование.

...