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

陈繁
  • 18

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

回复
阅读 4.9k
2 个回答

给文章的每个 标签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

倒排索引。

一看就像是为redis定制的任务。。。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏