Сравнение решений
1.1)
-- Sphinx search : array ids
SELECT *
FROM itemsindex
WHERE name MATCH(@name request)
ORDER BY price DESC
1.2)
-- Mysql search : array items
SELECT *
FROM items
WHERE id IN(ids)
&& EXISTS( SELECT *
FROM characteristics
WHERE id = items.id
&& char_val = filterVal )
&& EXISTS( SELECT *
FROM characteristics
WHERE id = items.id
&& char_val = filterVal2 )
2)
-- MongoDB search : array items
db.items.find({$text: {$search: request}, characteristics: {char_val: filterVal}});
В моем случае выбор пал на монгу. Пусть у нее и не идеальный fulltext поиск но этот способ гораздо компактнее и эффективнее.