Установка Solr и настройка для работы с MySQL

19 Сен
2011

Solr, как и Sphinx это поисковый движок, но как оказалось, он может на порядок больше чем Sphinx, но и уровень вхождения в его работу тоже на порядок выше. Мы будем устанавливать Solr из коробки. Дистрибутив можно взять на официальном сайте, сейчас последняя версия Solr 3.4.0. Но наиболее благоприятный для работы с MySQL является дистрибутив 1.4 и то из nighty builds. Именно ему можно отдавать данные напрямую из MySQL.

Скачав архив и распаковав его, например в директорию /solr (лучше заранее определиться откуда будет вестись отсчёт) узнаём то, что нам понадобится mysql connector. В поставке самого Solr включён не совсем удачно собранный, а именно нужная версия должны быть 3.1.14. Итак, находим mysql-connector-java-3.1.14-bin.jar и кладём его в директорию к Solr в /solr/example/lib. Для надёжности можно сделать симлинк с него на mysql-connector-java.jar в эту же директорию.
Следующее что надо сделать — это убедиться что в конфиге MySQL закоментирована строка skip-networking и сам MySQL запущен без —skip-networking, иначе Solr будет ругаться на connection refused. Конечно это не совсем безопасно, но выбирать не приходится.
После этого можно считать что Solr готов к работе.
Переходим к настройке Solr для работы с MySQL.
1. Создаём файл data-config.xml в директории /solr/example/solr/conf
И пишем в него следующее:
<?xml version=«1.0» encoding=«UTF-8»?>
<dataConfig>
    <dataSource type=«JdbcDataSource»
                  driver=«com.mysql.jdbc.Driver»
                  url=«jdbc:mysql://127.0.0.1/database_name»
                  user=«mysql_user»
                  password=«mysql_pass»
                  batchSize=«-1» />
 
    <document name=«doc»>
        <entity name=«item» query=«SELECT * FROM item WHERE deleted=0»>
            <field column=«id» name=«id» />
            <field column=«message» name=«message» />
        </entity>
    </document>
</dataConfig>

Особое внимание стоит обратить на опцию batchSize=»-1″. Это говорит Solr, что не надо пытаться втянуть всю таблицу целиком, а забирать порциями. Без этого параметра Solr будет ругаться на OutOfMemoryError если таблица содержит очень много записей.
2. В файлик schema.xml (который лежит в /solr/example/solr/conf) добавляем следующее:
<fields>
   <field name=«id» type=«string» indexed=«true» stored=«true» required=«true» />
   <field name=«message» type=«text» indexed=«true» stored=«true» required=«true» />
   <dynamicField name=«*»  type=«ignored» />
</fields>
 

Это то, что будет индексировать Solr. Детальная настройка нас пока не интересует.
3. Теперь правим файлик solrconfig.xml (находится в /solr/example/solr/conf), добавляем:
<requestHandler name=«/dataimport» class=«org.apache.solr.handler.dataimport.DataImportHandler»>
   <lst name=«defaults»>
      <str name=«config»>data-config.xml</str>
   </lst>
</requestHandler>
 

Так же, детальная настройка нас пока не интересует.
Теперь Solr можно запускать. Обычно используют более детальное описание параметров запуска, но пока достачно и обычного запуска командой: java -jar start.jar.
После запуска, проверить что Solr работает можно на странице: http://localhost:8983/solr/admin/.
Если эта страница открылась, значит Solr работает. Чтобы запустить индексацию данных надо зайти по следющему адресу: http://localhost:8983/solr/dataimport?command=full-import.
Когда Solr закончит индексирование, из формы, по адресу http://localhost:8983/solr/admin/ можно ему задавать запросы на поиск, чтобы убедиться что поиск работает.
По материалам Хабрахабр.



загрузка...

Комментарии:

Наверх