A
A
alestro2016-01-19 20:03:27
PHP
alestro, 2016-01-19 20:03:27

How to fasten filters for the catalog of an online store?

So far I have only thought of storing category id, product attribute id and two value and sql fields in a separate filters table. In the value field I store the filter criterion. And in the sql field, a piece of the query that needs to be added to select the product. Let's say there is a product - a TV set, it has an attribute: screen diagonal. Request

select a.name as name, f.value, f.`sql` from c_filters as f join products_attributes as a on f.a_id = a.id where f.c_id=20;

вытаскиваю список всех фильтров по атрибутам и их значения.
Потом приходиться сортировать массив, определенным образом, из-за того, что одному name принадлежит несколько value.
Вроде работает, но и явно решение не есть камельфо, да и помимо фильтрации по атрибутам есть еще вид постоянных фильтров для всех категорий, вроде: цены, цвета, бренда присущие любому товару. Да и способ их хранения в базе отличается, что в свою очередь делает sql запросы при сведении фильтров заметно большими. А если еще и не прикручивать ajax, а передавать значение фильтров гет запросами, то кусок sql в адресной строке - явно не лучшее решение. Что можно со всем этим сделать?
Еще возможно ли загнать несколько таблиц относящихся к товару в индекс sphinx'a и производить поиск по нужным критериям, и насколько это будет логичный подход?

Answer the question

In order to leave comments, you need to log in

1 answer(s)
Станислав, 2016-03-20
@stascer

Можете ознакомиться с моим решением фильтрации с помощью MVA атрибута в Sphinx. Работает намного быстрее, чем через запросы к БД.

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question