Приветствую всех! Столкнулся с такой задачей, надо создать фильтр для сайта бытовой техники, ранее с ними не сталкивался, на сколько сложен функционал еще не осознал, знаю что кода придется писать прилично), поделитесь своим опытом по созданию фильтров и распространенными ошибками, как правильно реализовать, выстроить структуру или где можно достать простой для его изучения, знаю что придется плотно работать с ajax и постоянно бегать на сервер. Увидел на сайте сони фильтр, довольно интересен: https://www.sony.ru/electronics/naushniki/t/naushniki-na-golovu?bestfor=travel . Понимаю что задача решаема, вот только надо все обмозговать, уложить инфу в голове и спокойно сесть написать.
зависит от размеров магазина. если товаров не много - то и заморочек нет, а если необходимо много товара отфильтровать и по многим параметрам - тут уже дело за оптимизацией, что бы сервер не ложился. а так - ничего сложного.
товаров прилично, параметров в зависимости от категории. ну мне нужно будет на каждую категорию свои параметры поиска создавать. А вот поиск в бд необходимых товаров лучше делать через %LIKE% и искать в старых(существующих) таблицах и если присутствует искомый параметр, то вывести. Или лучше будет создать доп таблицу с id продуктами и перечнем в ней конкретных параметров, по которым уже буду проверять, если есть такой ключ у продукта, то вывести в результат поиска с выбранным параметром, каким способом можно избежать большой нагрузки на сервер?
Тут вопрос в том, сколько категорий, действительно ли сильно они разнятся и сколько товаров. Возможно, хорошим решением станет EAV, как довольно гибкая структура, позволяющая хранить атрибуты без необходимости менять БД, а поиск же переложить на ElasticSearch. Может быть всё это способно уложиться в нормальную форму, а для ускорения поиска достаточно создать и с определенной периодичностью обновлять materialized view. Ну или только кажется, что товаров много, а на деле их пара десятков тысяч и достаточно правильно проставить индексы. А может вообще стоит поступить как настоящий хипстор и хранить все в монге. Короче, слишком мало вводных данных. В любом случае ajax - это самое последнее о чем следует думать )