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/, можно ему задавать запросы на поиск, чтобы убедиться что поиск работает.
Автор Sergey Tatarenkov в 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
В специфике проекта.