我有3张桌子:
topics
(id*, title, body)
tags
(id*,name)
topic_tags
(topic_id,tag_id)
每个主题都有一些标签。我想找到另一个主题的“最相关”主题,仅基于标签(而不是基于主题的标题和正文)。
如果更常见的标签2主题,它们更相关。我想通过相似性(=常见标签的数量)以某种方式对结果进行排序。
你有什么建议?
答案 0 :(得分:3)
SELECT tr.*
FROM topic t
JOIN topic_tag tt
ON tt.topic_id = t.id
JOIN topic_tag ttr
ON ttr.tag_id = tt.tag_id
JOIN topic tr
ON tr.id = ttr.topic_id
WHERE t.id = $topicid
GROUP BY
tr.id
ORDER BY
COUNT(*) DESC