Pull to refresh

Поиск на основе Nutch и Solr, быстрый старт. Часть первая, настройка под Linux

Не так давно, сугубо в образовательных целях, решил изучить задачу организации поиска. После прочтения нескольких статей на хабре и более детального поиска в интернете, было решено использовать Apache Solr в качестве поискового движка и Apache Nutch в качестве краулера. В качестве контейнера для Solr был выбран Apache Tomcat.
Разворачивал все компоненты дважды, на Linux и на Windows, но об этом чуть позже, как оказалось там есть интересные особенности.

Настройка nutch

Начнем с настройки компонент на Linux. Открываем стандартный терминал или вашу любимую консоль, в моем случае это yakuake, копируем в каталог /opt скачанные с официальных сайтов solr lucene.apache.org/solr/downloads.html, рекомендую версию 4.1, она поновее, да и интерфейс админской части на много приятнее, чем в версии 3.6.2, и nutch www.apache.org/dyn/closer.cgi/nutch, я использовал версию 1.6. Для удобства папки были названы tomcat, solr и nutch соответственно. После сем трем папкам рекурсивно были установлены permission'ы на все что только можно. Если кто не в курсе: sudo chmod -R 777 .
Далее нужно попробовать раскраулить хоть какой-нибудь сайт, чтобы в нашем nutch появились данные по которым мы планируем организовать поиск. Для этого следует изучить руководство отсюда http://wiki.apache.org/nutch/NutchTutorial. Я не буду полностью описывать, что я делал при настройке nutch, просто скажу, что нужно внимательно сделать шаг за шагом все как в туториале. Единственный нюанс, нужно чтобы переменная окружения JAVA_HOME у вас была установлена.
После создания папки urls, создаем в ней файл seed.txt. И прописываем в нем, по принципу одна строчка – один URL, те URL по которым будем краулить. После этого идем в папочку /conf/ и редактируем там файл regex-urlfilter.txt, в самый конец файла дописываем адреса из seed.txt по следующему щаблону: +^http://([a-z0-9]*\.)*nutch.apache.org/
, и обязательно в одной строчке только один url. Далее редактируем файл nutch-site.xml так как показано в вышеупомянутом туториале.

После этих манипуляций nutch для Linux у нас готов к использованию через консоль. Проверяем запустив в папке /opt/nutch следующую команду: bin/nutch crawl urls -dir crawl -depth 3 -topN 5, подробное описание параметров есть в том же туториале.
Если никаких сообщений об ошибках на вашей консоли нет и вы видете сообщение INFO: crawl finished: crawl, то мои поздравления, вы раскраулили содержимое сайтов из списка в файле seed.txt. Если возникли проблемы связанные с hadoop, то можно попробовать в папке /nutch/lib заменить библеотеку hadoop-core-1.x на hadoop-core-0.20.2, мне помогло. Предварительно рекомендую после всех манипуляций еще раз выставить полные права на папку nutch и все ее содержимое дабы не было проблем.

Настройка solr

Теперь нам нужно настроить solr и проиндексировать раскрауленные данные, чтобы по ним организовать поиск. Для начала проверьте, запущен ли у вас tomcat, если не запущен, то запустите. Слава богу у solr тоже есть общирный и весьма информативный вики, для любознательных ссылка wiki.apache.org/solr, там можно найти все что угодно и даже больше, чем нужно. Но мне нужно было разобраться довольно быстро, поэтому я воспользовался статьей отсюда blog.building-blocks.com/building-a-search-engine-with-nutch-and-solr-in-10-minutes. За не большими исключениями там все тоже хорошо работает.
Теперь об исключениях. Я все оставлял по дефолту, поэтому редактировал файлы в папке /solr/example/solr/collection/conf. Во всех полях, которые мы добавили в файл schema.xml нужно вместо type=”text” прописать type=”text_general” и заодно, если вы собираетесь копировать список полей из вышеупомянутой статьи, то удалите из скопированного текста строку с полем <field name=”url”. Прописываем в этом же файле url. Свой requestHandler я не описывал, обошелся дефолтными.
Проверяем работу solr: запускаем из папки /solr/example/ start.jar, после запуска пробуем в браузере перейти по адресу http://localhost:8983/solr, если видим админскую часть solr, то все хорошо. После этого идем в папку /opt/nutch/ и запускаем команду bin/nutch solrindex http://127.0.0.1:8983/solr/ crawl/crawldb crawl/linkdb crawl/segments. Если никаких сообщений об ошибках вы на консоли не видите, то поздравляю, мы проиндекировали раскрауленные данные и теперь можем попробовать по ним что-нибудь найти.
Идем в админку solr по адресу http://localhost:8983/solr/, далее переходим ко вкладке collection1, она расположена на панели слева, в появившемся меню выбираем владку Query. Для проверки просто нажмем кнопку Execute Query, результатом должны быть все проиндексированные xml-документы.
На этом пожалуй все, в следующей статье, если будет положительная реакция, расскажу как сделать примерно это же, но под Windows. Жду с нетерпением ваших комментариев и советов.
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.