Может, у меня довольно геморная реализация, сам бы хотел рассмотреть другие варианты. Сложность в динамическом выводе количества товаров возле фильтров и включении/отключении соседних значений фильтров в случае, если при выбранной комбинации они становятся недоступными. У Вас есть IDы атрибутов и IDы их значений, а также поле товара, содержащее пары (IDы-атрибута)_(IDзначения). Загоняете это поле в индекс sphinx и после очередного выбора пользователем фильтра производите поиск по этому полю товаров с комбинациями, которые он выбрал, плюс (!!) пара (IDы-атрибута)_(IDзначения) для каждого значения невыбранного фильтра. Количество найденных товаров и будет соответствовать индексу, проставляемому возле невыбранного фильтра.