Аватар пользователя Dima

Search API вместо Views: короткий обзор почему лучше строить собственные страницы вместе с Search API

Эта статья является продолжением предыдущей статьи о моем участии в Startup Weekend Kyiev 2012 и представляет короткий обзор организации полнотекствого поиска  на Drupal-сайте при помощи Search API и Facet API .

Использование Search API для меня было новым моментом в моей работе с Drupal. Ранее я использовал для построения кастомных страниц с возможностью фильтрации результов выдачи модуль views либо непосредственно модуль интеграции Solr search. Этот подход имет свои недостактки.
Если говорить про view то многие разработчики, которые работали с views на программном уровне, думаю, не раз сталкивались с тем что API этого модуля плохо документирован с одной стороны и абсолюно не удобен с другой (Конечно это мое личное мнение скорее всего найдутся люди котрые считают иначе) Кроме того, чтобы построить страницу views будет делать дополнительные запросы в базы чтобы извлечь информацию о текущем предствлении. 
В случае использования отдельного модуля для интеграции с Solr search дела обстоят намного лучше, но есть небольшой момент в пользу Search API, а именно универсальность. Это значит, что я могу установить локальную копию сайта у себя на компьютере, разработать страницу поиска не устанавливая Solr, а потом просто перенести этот код на сервер где уже установлен Solr и при этом, все что мне нужно будет поменять это машинное имя индекса (об этом в следующей статье).

Search API и Facet API позволяют создать гибкую, расширяемую, переносимую (что очень важно) базу для организации полнотекстового поиска на сайте.
Модуль  Search API представляет собой один интерфейс для интеграции с различным поисковыми технологиями, например Solr search, Xapian, поиск по базе MySQL (Database search) либо  Mongo DB (Mongo DB backend). Если рассматривать поиск по MySQL базе данных можно выделить модуль Fuzzy search, который позволяет создавать индекс по части слова. Эти  модули (Database search  и Fuzzy search) можно использовать для тестирования поиска либо на небольших проектах, либо на ранней стадии разработки проекта.
В свою очередь Facet API позвляет создавать возможность фасетного поиска на сайте. Оба модуля связываются вместе по средством contrib модуля Search facets который есть в составе Search API.
В следующей статье напишу об основах работы с Search API (создание базового запроса, добавление поискового текста, сортировка).

Комментарии

Fuzzy search не поддерживает фасеты, как обошли эту проблему?

Fuzzy search требует доработки для реализации поддержки фасетного поиска.