求一个文章和标签多对多的算法


现在有文章表,标签表,文章标签关系表,其中文章和标签 多对多
现在在一篇文章详情页,该文章有 a,b,c三个标签,需要按照标签匹配度提取相关文章并排序,匹配度高的排前面。
匹配度的计算方式,按照匹配标签的个数计算,拥有相同标签的个数越多,匹配度越高。
求除了穷举之外的算法,一定要考虑性能

算法

死神的歌谣 10 years, 10 months ago

给文章的每个 标签tag 设置一个 权重weight ,然后计算每篇文章的 权重值和 ,最后根据 权重降序 即得到文章

复杂度:O(n)

建议有空看看 数学之美 这本书;会有很多收获的

demo:

文章id      tag
 1         a,b,c
 2         a,b,d
 3         a,c,d
 4         d,e,f
 5         a,b,c

假设 a,b,c 的权重是 1,2,3
那么就有:

文章id      tag      权重
 1         a,b,c     6
 2         a,b,d     3
 3         a,c,d     4
 4         d,e,f     0
 5         a,b,c     6

文章1 的相关文章就是: 5,3,2,4

召唤师凯尔萨斯 answered 10 years, 10 months ago

Your Answer