Построить БД по 3 нормальной форме, у вас в упрощенном виде получится:
Таблица
products с полями:
id, name, title, description,...
Таблица атрибутов
features:
id, name, position, in_filter
Таблица
product_features по EAV (Entity Attribute Value/Сущность-Атрибут-Значение)
с полями:
product_id, features_id, value
Тут будут привязки к продукту, характеристике и значению
Например для товара с id=1 (Грузовик) с характеристикой c id=1 (Тип кузова) и если у него 2 значений, то табличка примерно так будет выглядеть:
+------------------------------------------------------------+
| product_id | feature_id | value |
+------------------------------------------------------------+
| 1 | 1 | Рефрижератор |
+------------------------------------------------------------+
| 1 | 1 | Рефрижератор+изотерм |
+------------------------------------------------------------+
Тогда, чтобы в картчоке товара вывести все значение, нужно будет просто выбрать все характеристики по полю product_id
Для фильтра тоже самое, только вы отбирать уже будете
product_id
по полю
features_id
, и по полученному списку айдишников выводить уже данные из таблицы продуктов
products