让我们以StackOverflow问题为例。他们每个人分配了多个标签。如何构建一种算法,根据它们有多少个普通标签(按普通标签的数量排序)找到相关问题?
现在,除了将至少具有一个公共(public)标签的所有问题选择到一个数组中,然后遍历它们,为每个项目分配一定数量的公共(public)标签,然后对该数组进行排序,我想不出什么更好的选择了。
有更聪明的方法吗?完美的解决方案将是单个sql查询。
最佳答案
这可能和O(n ^ 2)一样糟糕,但是它可以工作:
create table QuestionTags (questionid int, tag int);
select q1.questionid, q2.questionid, count(*) as commontags
from QuestionTags q1 join QuestionTags q2
where q1.tag = q2.tag and q1.questionid < q2.questionid
group by q1.questionid, q2.questionid order by commontags desc;
关于mysql - 基于通用标签搜索相关项目的算法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1556378/