viktorvsk
@viktorvsk

Active Filtering в интернет-магазине с помощью поисковых движков (Spinx, Solr)?

В интернет-магазинах есть фильтры по товарам. Называют это, вроде как, Active Filtering.
Скажем, у нас есть ноутбуки (products). У ноутбуков много значений фильтров (product_filter_values), которые, в свою очередь, связаны с с типами фильтров (filter_types) и значениями фильтров (filter_values).
НОУТБУКИ (products)
Диагональ экрана (filter_types)
  11 (filter_values)
  13.3
  15.6
Процессор
  Intel
  AMD


Теперь, скажем, мы хотим видет только ноутбуки с 11 и 13.3 диагональю, а так же не признаем AMD.
Казалось бы, все просто и задача самая типичная, но сейчас это работает таким ужасным образом:
SELECT products.id
  FROM products
  INNER JOIN
    product_filter_values ON product_filter_values.product_id = products.id
  WHERE
    product_filter_values.filter_value_id IN (1,2)      

INTERSECT

SELECT products.id
  FROM products
  INNER JOIN
    product_filter_values ON product_filter_values.product_id = products.id
  WHERE
    product_filter_values.filter_value_id IN (4)


И хотя работает не так уж и медленно, но кажется костылем + нет удобного способа сделать нормальный фасетный поиск (что бы отображались плюсы, например: AMD (+3))

Должен же быть способ реализовать это с помощью Sphinx или аналогичного поискового движка?
  • Вопрос задан
  • 743 просмотра
Пригласить эксперта
Ответы на вопрос 1
@Fortop
Tech/Team lead
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы