Как устроены сложные фильтры в интернет магазинах?
Секрет в том, что эти запросы делаются не к базе. Это фасетный поиск, осуществляемый движком полнотекстового поиска, типа Sphinx или Elasticsearch.
очередной фильтр, многие другие фильтры блокируется, если товаров по этим фильтрам нет
Вроде что-то такого, не знаю, насколько это правильно:Пришла выборка товаровСвойства товаров сгруппированы по названию (id)Исключены дубли значений свойствСопоставление свойств-значений с тем что в фильтрах с блокировкой значение != значение ИЛИ удаление(скрытие) значение != значение и загрузка новых Свойство-Значение
А там уже у каждого свойства может быть ещё атрибут определяющий какой интерфейс фильтра будет использован.