我们可以在StackOverflow网站上用多个标签标记一个问题,我想知道如何找出与常见标签最相关的问题.
假设我们在数据库中有100个问题,每个问题都有几个标签.假设用户正在浏览特定问题,我们希望系统在页面上显示相关问题.相关问题的标准是它们具有最常见的标签.
例如:问题1标有AAA,BBB,CCC,DDD,EEE.
问题2与前1相关,因为它也包含所有这5个标签.问题3与前2相关,因为它只有Questio1有4或3个标签.......
所以我的问题是如何设计数据库并快速找出与问题1相关的问题.非常感谢你.
也许是这样的:
select qt.question_id, count(*) from question_tags qt where qt.tag in ( select qt2.tag from question_tags qt2 where qt2.question_id = 123 ) group by qt.question_id order by 2 desc