Подбор масла для автомобиля: что скрывается под фильтром

Один из интересных кейсов в e-commerce — разработка каталога автомобилей для подбора подходящих товаров.

Задача была не просто собрать данные об автомобилях. Нужно было сделать так, чтобы пользователь интернет-магазина мог за несколько кликов найти подходящее масло для своего автомобиля, не разбираясь в огромном количестве фильтров. Для этого я собирал и структурировал данные в иерархию:

марка → модель → поколение → модификация → спецификации

На основе этой структуры был сделан кастомный фильтр. Например, пользователь выбирает:

BMW → 3 Series → нужное поколение → нужную модификацию

После этого система должна понять, какие характеристики относятся именно к этой модификации, и показать подходящие товары.

Но за простым интерфейсом скрывается довольно много логики. На стороне пользователя важно было сделать быстрый поиск. При большом количестве записей перебирать все данные на PHP при каждом запросе было бы неэффективно. Поэтому поиск выполнялся непосредственно на уровне SQL: через связи между таблицами и JOIN выбирались только подходящие записи. Условно логика выглядела так:

выбор автомобиля → SQL-запрос → связи со спецификациями → подходящие товары

Отдельно была реализована административная часть. В ней можно было управлять связями между модификациями автомобилей и их спецификациями. То есть для конкретной выборки:

BMW → 3 Series → поколение → модификация

система должна была знать полный набор характеристик, относящихся к этому автомобилю.

В итоге парсинг был только одной частью задачи. Получился полноценный процесс: парсинг данных → структурированный каталог → связь модификаций со спецификациями → быстрый SQL-поиск → подбор подходящих товаров. Мне нравится именно такой подход к разработке: когда за простым интерфейсом для пользователя стоит продуманная работа с данными, а техническое решение в итоге упрощает покупателю выбор товара.