Можно ли обойтись без Entity-Attribute-Value?
Проблема EAV в том, что каждое поле лежит независимо от объекта. Т.е. выборка 10-ти объектов, из 10-ти полей, сделает около 100 random seek. Варианты решения:
1. Memory таблицы — быстрый random seek, ограниченный размер и необходимость синхронизации с реальными данными.
2. Sphinx и ему подобные. Дополнительно храним данные в формате, более удобном для фасеточного поиска.
3. nosql — легче масштабировать, данные зачастую хранятся в памяти, отсутствие схемы, но при этом с возможностью создания индексов по полям.
Можно попробовать вариант с entity, у которого есть: идентификатор, общие поля (типа стоимости и наличия), поле для поиска (конкатенированные значения атрибутов через дикий разделитель) и поле с XML (или любой другой формат), в котором будет храниться вся информация.