- PVSM.RU - https://www.pvsm.ru -
Я хочу написать не просто очередной пост «как прикрутить Солр к Друпалу», а серию подробных постов начиная от базовой настройки и заканчивая фасетами.
На основе ваших комментариев и вопросов я готов включить дополнительный материал в очередной пост.
Несколько преимуществ поиска через Apache Solr перед обычным поиском в Drupal:
Итак в первой части начнем с базовой настройки.
Входные параметры:
Я использую ОС Ubuntu 10.04
За основу я взял Drupal 7.22 и модули для поиска search_api и search_api_solr
Сервер поиска Apache Solr 3.6.1
Список модулей, которые потребуется скачать: search_api, search_api_solr, entity, ctools, views
Скачиваем сервер с официального сайта [1]
Есть и более новая версия Apache Solr 4.x, но файлы схемы в модуле search_api_solr есть только для третьей версии, поэтому следует использовать ее.
Распаковываем скачанный архив в любую удобную для вас папку.
В моем случае это /home/kainz/applications/apache-solr-3.6.1 Для запуска сервера, вам понадобится Java. У меня установлен пакет openjdk-6, вы можете выбрать этот или любой другой, который вам подойдет.
Чтобы запустить сервер нужно в консоли перейти в директорию Apache Solr, а затем в example (в моем случае это /home/kainz/applications/apache-solr-3.6.1/example) и выполнить команду java -jar start.jar
.
В случае успешного запуска вы увидите кучу служебной информации и в самом конце сообщение:
«2013-04-05 00:27:09.845:INFO::Started SocketConnector@0.0.0.0:8983» или что-то похожее (зависит от версии).
Если у вас возникнут проблемы совместимости новых версий Apache Solr с модулями Drupal, то можете скачать сервер [2], который я использовал при написании этого мануала. Он уже настроен и работает.
Сперва устанавливаем модули search_api [3] и search_api solr [4].
Я использовал search_api_solr 7.x-1.0-rc2 [5] и search_api 7.x-1.4 [6]
Помимо модулей, необходимо установить библиотеку SolrPHPClient. Скачать ее можно здесь [7]. Скачанную библиотеку необходимо положить в папку sites/all/libraries/SolrPHPClient в вашем Drupal сайте.
Теперь нужно зайти в модуль search_api_solr и скопировать оттуда два файла — schema.xml и solrconfig.xml в папку с конфигами сервера (в моем случае /home/kainz/applications/apache-solr-3.6.1/example/solr/conf). Эти файлы нужны для того чтобы Drupal мог взаимодействовать с Apache Solr. После того как вы скопируете эти файлы, сервер необходимо перезапустить. Попробуйте перейти по адресу localhost [8]:8983/solr/admin/ чтобы убедиться что поисковый сервер работает.
Если вы еще не включили модули search_api и search_api_solr, то включите их и очистите кеш.
На странице admin/config/search/search_api вы сможете создать две сущности — сервер и индекс.
Сервер служит своего рода мостом между Drupal и Apache Solr. В нем хранятся настройки для доступа к серверу Apache Solr.
Индекс позволяет настраивать поиск определенным образом. Вы можете создать несколько индексов для одного сервера. Например разные индексы для разных типов нод.
Итак создадим сервер admin/config/search/search_api/add_server
В качестве класса сервиса выбираем «Solr service». Если вы не можете выбрать класс, то убедитесь что библиотека SolrPHPClient установлена в sites/all/libraries/SolrPHPClient и модуль search_api_solr включен.
Данные сервера, такие как хост, порт и путь подходят для установки по умолчанию. Если сервер настроен правильно, то после отправки формы вы увидите информационное сообщение:
Теперь создадим индекс — admin/config/search/search_api/add_index. Назовем его Node index, в качестве сервера, выбираем созданный нами Solr server. Index items immediately — полезная опция, позволяет индексировать ноды в момент создания (если не выбрать ее то ноды будут индексироваться по крону).
Следующий шаг — выбор полей, по которым будем искать. Пока что выберем только title и сохраним форму. Теперь создаем представление (view) для того, чтобы отображать результаты поиска — admin/structure/views/add. Перед этим необходимо включить модули search_api_views, views, views_ui и ctools.
Для результатов поиска есть специальный тип представлений для модуля views. Выберите ваш индекс — Node index и создайте представление с дисплеем page и настройте его.
Для этого добавим поля Title и Body для вывода. Затем добавим контекстуальный фильтр «Search: Fulltext search» и выберем поле Title в настройках это фильтра. Таким образом поиск будет происходить по полю Title. В дополнение к этому добавим еще exposed filter для того чтобы можно было вводить аргументы поиска через форму.
Сохраняем вьюху. Запускаем индексирование нод, если они еще не проиндексированы на этой странице admin/config/search/search_api/index/node_index/status. Я заранее создал пару нод — статей.
Переходим на страницу /search-results — именно такой адрес я указал для дисплея с типом page.
Сейчас выводятся все ноды, поскольку ключевые слова не указаны.
Так выглядят результаты поиска по ключевым словам.
По умолчанию Apache Solr плохо ищет по русским словам. Чтобы это исправить, в файле schema.xml найдите строчки
<!-- <filter class="solr.SnowballPorterFilterFactory" language="English" protected="protwords.txt"/> -->
и замените их на
<filter class="solr.SnowballPorterFilterFactory" language="Russian" protected="protwords.txt"/>
В процессе разработки, я сталкивался с тем, что последние версии модулей поиска не дружат с последней версией Apache Solr, схема не подходит в последней версии поискового сервера и прочими проблемами совместимости. Поэтому в тексте статьи я указал версии модулей и поискового сервера, которые я использовал. Если у вас будут проблемы с индексированием, попробуйте использовать именно эти версии.
Автор: IlyinEugene
Источник [9]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/drupal/31455
Ссылки в тексте:
[1] официального сайта : http://lucene.apache.org/solr/
[2] сервер: http://www.badscript.net/storage/apache-solr-3.6.1.zip
[3] search_api: http://drupal.org/project/search_api
[4] search_api solr: http://drupal.org/project/search_api_solr
[5] search_api_solr 7.x-1.0-rc2: http://ftp.drupal.org/files/projects/search_api_solr-7.x-1.0-rc2.zip
[6] search_api 7.x-1.4: http://ftp.drupal.org/files/projects/search_api-7.x-1.4.zip
[7] здесь: http://code.google.com/p/solr-php-client/downloads/list
[8] localhost: http://localhost
[9] Источник: http://habrahabr.ru/post/175527/
Нажмите здесь для печати.