Я пытаюсь понять, как упорядочить элементы с соответствующими тегами по количеству совпадающих тегов.
Допустим, у вас есть три таблицы MySQL:
теги (tag_id, title)
статьи (article_id, some_text)
article_tags (tag_id, article_id)
Предположим, у вас есть четыре статьи, в которых:
article_id = 1
содержит теги «юмор», «смешной» и «веселый».
article_id = 2
имеет теги «смешно», «глупо» и «тупой».
article_id = 3
содержит теги «смешно», «глупо» и «тупой».
article_id = 4
имеет тег «совершенно серьезно».
Вам нужно найти все статьи, связанные с article_id = 2
по крайней мере одним совпадающим тегом и возвращает результаты в порядке лучших совпадений. Другими словами, article_id = 3
должно идти первым, с article_id = 1
вторым, а article_id = 4
не должно отображаться вообще.
Это что-то, что можно сделать в SQL-запросах или самостоятельно, или это лучше подходит для чего-то вроде Sphinx? Если первое, то какой запрос следует выполнить и какие индексы следует создать для получения наиболее эффективных результатов? В последнем случае просьба расширить.