В первой статье я рассказал о том как установить и настроить поисковый сервер Apache Solr для работы с Drupal 7. Теперь речь пойдет о том, как настроить индекс.
Для тех кто не читал первую часть, я рекомендую прочесть ее для лучшего понимания материала.
- Поиск на Drupal 7 с помощью Apache Solr ч.1 — базовая настройка
- Поиск на Drupal 7 с помощью Apache Solr ч.2 — учимся настраивать индекс
Напомню вам что в настройках модуля search_api_solr фигурируют две основных сущности: сервер и индекс.
В настройках индекса вы можете указать поля и условия по которым Apache Solr будет индексировать контент на вашем сайте. Разберем настройки индекса по порядку.
Поля
В первую очередь следует обратить внимание на поля. Вы можете указать в настройках индекса те поля, по которым Apache Solr будет индексировать контент. Для этого выберите ваш индекс и перейдите во вкладку «Fields». Здесь вы можете выбрать индексируемые поля в списке доступных на этой странице. Иногда не все поля доступны сразу и их можно добавить с помощью элемента «связанные поля». Он находится в самом низу страницы.
Добавим поле «The main body text» и сделаем его индексируемым.
Если ваша сущность (в моем примере это нода) имеет референс на другие сущности, например на терм таксономии, то вы можете искать ноды в том числе и по полям терма таксономии. Таким образом можно добавлять в индекс поля из нескольких уровней связанных сущностей.
Для выбранных полей можно указать тип индексирования. Из названия типов понятно для чего они служат. Скажу лишь что fulltext означает полнотекстовый поиск и Apache Solr будет искать не только по целому значению, но и по его части. А string служит для поиска по целому значению. Например для заголовков имеет смысл выбирать fulltext, а для жанра книги (приключения, фантастика, классика...) лучше выбрать string.
Помимо типа индексирования, есть еще «вес поля». С помощью веса вы можете управлять приоритетом результатов поиска по каждому полю. В данном случае, чем выше вес, тем выше приоритет у поля.
Выбрав нужные поля сохраните форму. Я выбрал заголовок и тело статьи.
Если вы добавляли группы полей через «связанные поля», но ничего не выбрали в этих группах, то поля из этих групп пропадут и их нужно будет добавлять снова.
Контент
Теперь перейдем на вкладку workflow. Здесь можно настроить правила индексирования контента. Первый раздел настроек называется «Data alterations». В нем можно вы можете добавить фильтр по типу нод (Bundle filter) или исключать из индекса неопубликованные ноды (Exclude unpublished nodes). В случае с бандл фильтром обратите внимание на то, что по умолчанию он наоборот исключает выбранные типы контента. Поэтому не забудьте выбрать нужный вам режим (исключать перечисленные или наоборот индексировать перечисленные).
Второй раздел это процессоры. Они позволяют выполнять дополнительную обработку данных. Например процессор «Ignore case» позволяет искать в индексе без учета регистра. Для большинства процессоров можно выбрать поля, на которые они должны применяться.
Выберите нужные вам настройки и сохраните форму. Теперь необходимо вернуться на вкладку «Status» и переиндексировать контент.
Еще один важный момент — необходимо включить фильтрацию по нужным полям в настройках представления, которое мы использовали для вывода результатов поиска. Для этого в самом представлении необходимо зайти в настройки фильтра Search: Fulltext search и выбрать поля, на которые будет действовать этот фильтр.
После этого переходим на страницу /search-results (мы настраивали представление для это страницы в первой статье) и любуемся результатами работы поиска.
В следующей статье я расскажу, как добавить собственные поля и настройки индексирования, в случае если стандартных недостаточно.
Автор: IlyinEugene