Я пытаюсь выяснить, как упорядочить элементы с совпадающими тегами по количеству совпадающих тегов.
Допустим, у вас есть три таблицы MySQL:
tags(tag_id, title)
articles(article_id, some_text)
articles_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-запросах или в одиночку, или это лучше подходитза что-то вроде сфинкса?Если первое, какой тип запроса должен быть выполнен и какие индексы должны быть созданы для наиболее производительных результатов?Если последнее, пожалуйста, расширьте.