Solr, установка и настройка работы с MySQL

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

Скачав архив и распаковав его, например в директорию /solr (лучше заранее определиться откуда будет вестись отсчёт) узнаём то, что нам понадобится mysql connector, так как в текущей редакции Solr это очень трудоёмкая задача поддерживать сокеты, потому что Java, сама по себе, их не поддеживает. В поставке самого Solr включён не совсем удачно собранный mysql connector,- нам он нужен исключительно версии 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. А всё это потому что коннектор соединяется только через TCP/IP. Конечно это не совсем безопасно, но выбирать не приходится.

После этого можно считать что 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/, можно ему задавать запросы на поиск, чтобы убедиться что поиск работает.

Автор в March 29, 2011 Опубликовано в рубрике MySQL Shell Solr Xserve Памятка.

Комментарии

  • Tomcat

    2011/08/08 at 23:27


    сам столкнулся сегодня с установкой solr, дополните пожалуйста ссылкой на установку сего зверя :
    http://yoodey.com/how-install-apache-solr-141-drupal-7-ubuntu-amazon-ec2-guide
    не сталкивались с dataimporthandler? насколько я понял, он тоже позволяет делать прямые запросы в mysql при этом идём в комплекте с solr

  • Sergey Tatarenkov

    2011/08/09 at 00:02


    Немного использовал, но в силу ряда причин пользуюсь другой технологией, отдачи данных в solr.

  • Tomcat

    2011/08/09 at 08:59


    Хм, причины в специфике проекта или solr?

  • Sergey Tatarenkov

    2011/08/09 at 13:44


    В специфике проекта.

Добавить комментарий

* обязательно к заполнению.

Имя *

Почта *

Сайт