ser*_*erg 11 mysql tags algorithm search many-to-many
让我们以StackOverflow问题为例.他们每个人都分配了多个标签.如何建立一个算法,根据他们有多少常见标签(按常用标签的数量排序)找到相关问题?
现在我想不出什么比仅仅选择在数组中至少有一个公共标记的所有问题,然后循环遍历它们,为每个项目分配多个公共标记,然后对这个数组进行排序.
这样做有更聪明的方法吗?完美的解决方案是单个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;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2543 次 |
| 最近记录: |