Вы здесь

Apache Solr + FacetAPI и выбор цены.

В этой статье рассмотрены особенности модулей Search API Solr Search, Search API ranges.
Краткое содержание:
* В модуле Search API Solr Search для Drupal 7 нету оператора между.
* Пример хука, чтобы исправить эту ситуацию.
* Тонкости настройки модуля Search API ranges.

Задача.

Допустим перед вами стоит задача сделать фасетный поиск [От - До] по цене использую Drupal + Search API + Apache Solr.

Особые условия.

Используете Search API Ranges и поиск настроили с помощью Commerce Search API.
Если в вашем магазине у одного товара, может быть много вариаций. То такой фасетный фильтр будет работать криво. Всё это из-за того что в модуле Search API Solr 7.х нету оператора МЕЖДУ, поэтому когда вы делаете запрос
Цена [50 до 100], модуль превращает её в такое условие.
Цена [50 до *] и [* до 100].
Если у вашего товара две вариации с ценами 20 и 120, то этот товар удовлетворит условиям и попадет в выдачу. Такая же ситуация и с любыми другими multiValued полями.

Терминология.

multiValued поля - это поля в которых могут хранится больше одного значения.
Термин multiValued используется в Apache Solr.

Решение.

Drupal 7.

  1. Патчить несколько модулей, но готовых патчей сейчас нету.
  2. Или можно алтерить запрос.

Я выбрал второй вариант. Пример кода доступен на github.

Issues с этой проблемой:
* https://www.drupal.org/node/2459457

Drupal 8

В Search API Solr для Drupal 8 добавили новые операторы, поэтому эта проблема уже решена. Исходный код

Тонкости настройки модуля Search API ranges.

Apache Solr до версии 5.3 не умеет делать сортировку multiValued полей.
Поэтому если используете Search API ranges и multiValued поля надо:
1) включить фильтр Filters -> Search API ranges.
2) добавить новые поля в индексацию.
После этого в индекс попадут два новых поля максимальное и минимальное значения нашего поля. Это решает вопрос сортировки. А сортировка потребуется, когда виджет получает мин и макс значения для текущего результата. Подробнее о концепции.

Немного рекламы

Аренда сервера Apache Solr для Drupal сайта от компании Ra-Don.
Также можем настроить фасетный поиск на вашем Drupal сайте.

2
0
28.12.2016 - 19:15