Я хотел бы использовать Sphinx для сопоставления многих ко многим. Я взял случай с вопросами и тегами здесь, в StackOverflow, для иллюстрации.
Вопрос может быть связан со многими тегами и наоборот для тега.
Итак, в mysql у меня есть 3 таблицы: question, tag, question_tag.
Я хотел бы искать вопросы, которые содержат как можно больше тегов в наборе «java», «sphinx», «mysql», «hibernate». Таким образом, в результате могут появиться вопросы с 3 совпадениями, 2 совпадениями или 1 совпадением.
В настоящее время я создаю поле, которое объединяет все эти теги с пробелом, и сфинкс выполняет поиск в этом поле. Но это звучит глупо и создает много накладных расходов при добавлении и удалении тегов. Найдется способ поумнее, да?