Пошук на Drupal 7 за допомогою Apache Solr год
Ще одна копія хабора
Пошук на Drupal 7 за допомогою Apache Solr ч.4 - фасетні фільтри
Для чого потрібен фасет і що це таке. Фасет – це фільтр за певним полем. Цей фільтр працює як уточнюючий.
Розглянемо невеликий приклад. У вас є сутність автомобіль і вона характеризується кольором та фірмою-виробником. Спочатку можна вибрати кілька кольорів у фільтрі.

Але вибравши фірму виробника, ви фільтруєте вибірку і тепер вам доступні лише ті кольори, які відповідають обраному виробнику.

Якщо знову натиснути на Renault, то фільтр повернеться до початкового стану.
Така функціональність повсюдно використовується для пошуку у різних інформаційних базах та каталогах.
Тож давайте розберемося, як налаштувати фасети для пошуку на Drupal, через Apache Solr. У минулих уроках ми вже встановили необхідні модулі та налаштували сервер Apache Solr.
Тепер нам потрібно виконати ще кілька дій для налаштування сайту:
1. Спочатку необхідно встановити модуль facetapi і Search facets (входить до facetapi).
2. Тепер створимо новий контент тайп Auto та додамо туди поля для кольору та фірми виробника.

3. Ще нам потрібно змінити параметри індексу, щоб він індексував ноди з типом auto. Для цього в налаштуваннях індексу заходимо у вкладку workflow і налаштовуємо bundle filter.

4. Потім переходимо у вкладку Fields і включаємо поля колір та бренд в індекс.
Отже, ми налаштували індекс для пошуку за нодами з типом auto. Тепер перейдемо безпосередньо до фасетів. Якщо ви вже включили необхідні модулі та почистили кеш (це в Drupal найголовніше), то в налаштуваннях індексу у вас мала з'явитисянова вкладка Facets. У цій вкладці можна увімкнути фасетні фільтри для полів, які додані до індексу. Для кожного фасету можна вказати налаштування, але про них трохи пізніше. Поки що просто включимо фасети та проіндексуємо наші ноди з типом auto.
Тепер потрібно налаштувати висновок. Для кожного фасетного фільтра створюється звичайний блок і ви можете його вивести як вам зручно, наприклад через регіони або панелі. Фасети мають один нюанс — для того, щоб вони відмалювалися — завірюха, через яку робиться запит у Apache Solr вже має відпрацювати. Говорячи простіше — на сторінці слід поміщати спочатку завірюху з результатами, а нижче за рівнем (відповідно пізніше за відмальовуванням) блоки фасетів. Після того, як я помістив блоки фасетів у регіон, у мене вийшла така сторінка

Тепер поговоримо про налаштування фасетів. На скріншоті ви можете побачити форму налаштувань

Розглянемо найважливіші з них:
- Display widget – дозволяє вибирати віджет для фасету. За замовчуванням доступні віджети у вигляді посилань та чекбоксів. Є ще кілька додаткових віджетів, але він їх розповім у наступній статті. У ній ми навчимося писати власний віджет.
- Сортування — визначає за якими критеріями сортуватимуться значення у блоці фасета під час відображення.
- Оператор - AND або OR. Що стосується AND ви можете вибрати лише одне значення у кожному фасеті, а разі OR — кілька.
- Display for searches - можна вказати для яких дисплеїв в'юх спрацьовуватиме фасет. Це може стати в нагоді, якщо у вас на одній сторінці кілька дисплеїв з пошуковою видачею і ви хочете фільтрувати лише один з них.