xandeadx.ru Блог музицирующего веб-девелопера

Drupal → Search API и поиск с морфологией

Опубликовано в

Пошаговая инструкция настройки Search API для поиска с морфологией.

Кто пользуется встроенным в друпал модулем поиска и по каким то причинам не хочет использовать Search API, тому достаточно включить модуль Russian stemming и сделать переиндексацию индекса на странице admin/config/search/settings. После этого поиск с морфологией заработает без дополнительной настройки.

Настройка Search API

  1. Отключаем модуль Search.

  2. Включаем модули Search API, Database search и RussianStemmer.

  3. На странице admin/config/search/search_api добавляем новый сервер с классом Database service:

  4. На странице admin/config/search/search_api переходим в настройки дефолтного индекса:

  5. Изменяем сервер на созданный ранее и сохраняем изменения:

  6. На странице admin/config/search/search_api включаем дефолтный индекс:

  7. На странице admin/config/search/search_api переходим в настройки Workflow у дефолтного индекса:

  8. В блоке Processors включаем Russian stemmer:

  9. На этой же странице изменяем порядок процессоров так, чтобы Russian stemmer оказался последним и сохраняем изменения:

  10. На странице admin/config/search/search_api переходим по ссылке Status дефолтного индекса:

  11. Запускаем индексирование с помощью кнопки Index now:

  12. После окончания индексирования проверяем таблицу search_api_db_default_node_index_body_value. В ней должны быть слова без окончаний:

Настройка Views

  1. Включаем модуль Search views из состава Search API.

  2. Создаём страницу представления по дефолтному индексу и с выводом Rendered entity:

  3. Добавляем раскрытый фильтр Search: Fulltext search

  4. В настройках фильтра выбираем оператор Contains any of these words, а в поле Searched fields все поля из индекса, по которым будет происходить поиск:

  5. Проверяем результат:

Подробнее про Search API:

Поиск на Drupal 7 с помощью Apache Solr
Search API. Работа с Apache Solr
Обзор модуля Search API для Drupal
Описание модуля на content-management-systems.info
Доклад о Search API на DrupalCon Prague 2013

Написанное актуально для Drupal 7
Похожие записи

Комментарии RSS

для больше наглядности результата(пункт 5) я бы добавил в процессоры highlighting ,а в сам текст несколько словоформ

И база данных сразу не хило так разжиреет... в зависимости от количества уже имеющегося контента.

не больше чем от стандартного модуля Search

Раз уж речь зашла о Search API и Search Views, не могу не спросить, может сталкивались: как на странице результатов поиска выводить запрос (в заголовок, например)?

Пробовал играться с contextual filters - не работает.

drupal_set_title(запрос);

xandeadx А Sphinx будет не лучше?

зависит от задачи

xandeadx задача организовать как можно более ролевыантный поиск

Вы написали: "Кто пользуется встроенным в друпал модулем поиска и по каким то причинам не хочет использовать Search API..."
А надо ли использовать модуль Search API если можно и со стандартным поиском искать с морфологией? Т.е. что дает использование Search API по сравнению со стандартным?

почитайте описание Search API

Читал про возможности Search API (но не пользовался), меня интересовало именно качество поиска с морфологией - есть ли разница.

разницы нет, принцип один

Подсветка только в поиске по слову работает :(
Тогда смысла вообще нет в сиём творении если по части слова подсветить нужно результат. Ну или руками или JS-ом...

Все поставил, все настроил, все круто работает, но после отключения search пропадает блок с формой поиска, который выводился на всех страницах сайта и после введения слов в который собственно на страницу поиска и попадали раньше.

Не соображу как вернуть поле формы поиска на все страницы сайта при использовании Search API?

вынесите раскрытый фильтр в блок

Спасибо за статью. Подскажите а как быть если я подключаю модуль search api autocomplete. У меня подтягиваются результаты - автокомплит работает. Проблема возникает если я фильтрую по терминам - дополнительно к поиску. Как сделать чтоб в автокомплит попадали только данные, ноды которых связаны с выбранным термином. То есть что то наподобии фасетного поиска.

Спасибо за статью, в который раз к ней возвращаюсь.
Но тут возникла маленькая проблема:
поиск тупо игнорирует цифру "0". Если вводить 100 - находит значения в которых есть 100, если 001 - ищет только 1.. Просто ввести 0 - все остается на месте. Через фильтр по заголовкам такой проблемы нет, если заголовки брать из индекса ноль не ищет. Грешу на токенайзер, может где пробельные символы что ввести? Подскажите пожалуйста, уже всю голову сломал...

Хотя если токенайзер отключить ничего не меняется..

Оставить комментарий

Содержимое этого поля является приватным и не будет отображаться публично. Если у вас есть аккаунт в Gravatar, привязанный к этому e-mail адресу, то он будет использован для отображения аватара.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Доступные HTML теги: <a> <i> <b> <strong> <code> <ul> <ol> <li> <blockquote> <em> <s>
  • Строки и параграфы переносятся автоматически.
  • Подсветка кода осуществляется с помощью тегов: <code>, <css>, <html>, <ini>, <javascript>, <sql>, <php>. Поддерживаемые стили выделения кода: <foo>, [foo].

Подробнее о форматировании