"Если бы губы Никанора Ивановича да приставить к носу Ивана Кузьмича, да взять сколь-нибудь развязанное, какая у Балтазара Балтазаровича, да, пожалуй, прибавить к этому еще дородности Ивана Павловича — я бы тогда тотчас же решилась. А теперь — поди подумай!"
Н. В. Гоголь, "Женитьба"
Замечательная штука -- искать инструкции по установке чего-нибудь эдакого в интернете. Часто приходится собирать информацию по кускам из двух-трёх описаний одного и того же. Вот и со связкой Solr + MySQL получилось тоже самое. За основу были взяты два описания: "Using Solr / Lucene for full text search with MySQL DB" и "Apache Solr MySQL Sample Data Config". Плюс к этому множество форумов и багрепортов, ибо и Solr, и MySQL -- штуки местами удивительные и непредсказуемые. Свои нечеловеческие эксперименты в области full-text поиска я начал с создания базы данных и таблицы, которые и будут являться хранилищем требуемых данных: mysql> CREATE DATABASE solrdb;
mysql> USE solrdb;
mysql> CREATE TABLE `jos_content` (
> `id` bigint(20) NOT NULL AUTO_INCREMENT,
> `state` tinyint(3) unsigned NOT NULL DEFAULT '0',
mysql> INSERT INTO jos_content VALUES(null, 1, a', 'intro1', 'ft1'); mysql> INSERT INTO jos_content VALUES(null, 1, 'b', 'intro2', 'ft2'); mysql> INSERT INTO jos_content VALUES(null, 1, 'c', 'intro3', 'ft3');
Следующий пункт программы -- это добыча подходящего MySQL JDBC-драйвера. Драйвера с версией младше 5.1.7 не подходят, поскольку не умеют работать с UTF8, в случае их использования JDBC-драйвер сгенерирует исключение java.sql.SQLException с загадочным обоснованием вида: "Unknown initial character set index '192' received from server. Initial client character set can be forced via the 'characterEncoding' property.". Во избежание проблем берётся самый последний из предлагаемого списка драйверов.
После того как драйвер найден, его необходимо положить в правильное место. "Правильным местом" является каталог /lib контейнера сервлетов или web-сервера, а не одноимённый каталог в домашней директории Solr. В противном случае ищите в логах запись про отсутствующий драйвер.
Дальше действия выполняются почти, как указано в инструкциях. 1. Создаётся конфигурационный xml-файл для работы с базой данных, я назвал его dataimport.xml. Поскольку я развлекался с прилагаемым к Solr демо-приложением и, опять же, прилагаемом контейнером сервлетов Jetty, то файл я разместил в <SOLR_HOME>/example/solr/conf. Вот его содержимое: <?xml version="1.0" encoding="UTF-8"?> <dataConfig> <dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost/solrdb" user="root" password="11111111"/>
2. В конфигурационный файл <SOLR_HOME>/example/solr/conf/solrconfig.xml добавляются настройки для выполнения импорта данных из базы: <requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler"> <lst name="defaults"> <str name="config">dataimport.xml</str> </lst> </requestHandler>
Экспериментирую с Solr. Полнотекстовая поисковая платформа Solr написана на Java и, если верить документации, должна запускаться как отдельное серверное приложение внутри любых контейнеров сервлетов. Последнее утверждение я и проверял. Приложение без всяких проблем уживается с Jetty, который используется в качестве контейнера сервлетов для демонстрационных приложений Solr. В дополнение к этому я попробовал использовать Solr совместно с сервером Resin. Собственно всё, что я сделал -- выполнил инструкции, предлагаемые для использования Solr совместно с Apache Tomcat. И так, что я сделал:
Через консоль администратора Resin выполнил deploy solr.war из каталога <SOLR_HOME>/webapps. Здесь <SOLR_HOME> -- это абсолютный путь к каталогу с Solr.
Запустил приложение: http://<host>:<port>/solr. В результате в каталоге web-приложений Resin (у меня это /var/www/webapps) появился каталог solr.
В этом каталоге отредактировал файл WEB-INF/web.xml -- раскомментировал строчки:
В качестве значения env-entry-value указал SOLR_HOME. Последнее, что я сделал -- это вызвал solr повторно для выполнения некоторых полезных действий, например, для индексации данных: http://<host>:<port>/solr/dataimport?command=full-import
<response> <lst name="responseHeader"> <int name="status">0</int> <int name="QTime">23</int> </lst> <lst name="initArgs"> <lst name="defaults"> <str name="config">dataimport.xml</str> </lst> </lst> <str name="command">full-import</str> <str name="status">idle</str> <str name="importResponse"/> <lst name="statusMessages"> <str name="Total Requests made to DataSource">1</str> <str name="Total Rows Fetched">3</str> <str name="Total Documents Skipped">0</str> <str name="Full Dump Started">2011-05-27 16:28:32</str> <str name=""> Indexing completed. Added/Updated: 3 documents. Deleted 0 documents. </str> <str name="Committed">2011-05-27 16:28:33</str> <str name="Optimized">2011-05-27 16:28:33</str> <str name="Total Documents Processed">3</str> <str name="Time taken ">0:0:0.544</str> </lst> <str name="WARNING"> This response format is experimental. It is likely to change in the future. </str> </response>
//TODO: Написать в склерозник инструкцию Solr + MySQL
Спасибо =) я знаю intuit, очень крутой сервис. тока я по ключам его настроила => а задача была по сертификатам =(, у меня как раз не выходит центр сертификации установить на мой сервер.
Кстати, есть такая классная тётка, Лапонина Ольга Германовна, она в МГУ преподаёт. У неё есть учебник по протоколам безопасного сетевого взаимодействия, и там…
Comments
но статья…
Кстати, есть такая классная тётка, Лапонина Ольга Германовна, она в МГУ преподаёт. У неё есть учебник по протоколам безопасного сетевого взаимодействия, и там…
нет, на винде.
Извините за глупые вопросы, если что.