Вообще ваша задача как я понял это т.н. фасеточный поиск.
en.wikipedia.org/wiki/Faceted_search
Когда передо мной стояла такая проблема я решал ее таким образом: есть таблица «товаров», в которой все товары.
Есть справочник «характеристик».
Есть таблица в которой идут тройки id товара — id характеристики из справочника — значение
Вся эта база индексируется сфинском. Далее делается примерно как описано в статье:
habrahabr.ru/blogs/sphinx/64318/
Т.е. сначала например пользователь делает поисковый запрос «телефоны samsung». Одним запросом к базе данных мы выводим все телефоны, а используя группировку по id характеристики получаем все характеристики, которые возможны для этих товаров: т.е. например диагональ экрана, операционная система, ну и потом выбираем для каждой характеристики возможные значения, подходящие под запрос. Благодаря мульти-запросам такой поиск работает довольно быстро.
Потом соответственно пользователю предлагается выбрать характеристики из списка возможных. Ну и в общем то весь алгоритм. За разумное время реализуется, работает довольно быстро, с добавлением товаров в таблицу проблем нет.