想实现一个 tags 关联度算法, 大多是基于 Go/PHP 这些的, 没找到 SQL 实现的, 朋友推荐了一个算法
https://github.com/Iwark/jaccard
感觉这样不 GEEK,要是直接能写到 SQL 语句里就很 666 了,研究了半天,SQL 本身的逻辑实现这个蹩脚
于事,根据算法宗旨,写出来了下面这行语句,按关联度倒序, 看懂的拿走不谢~~
10 跟 7 是两个 tag 的 ID,有多个就多个 repalce 套一下
select id, m from
(
select id, group_concat('|', article_tags.tag_id,'|') as m from article
right join article_tags on article_tags.article_id=article.id
group by article.id
) as tt
order by length(replace(replace(tt.m, '|10|', space(100)), '|7|', space(100)))
desc
有更好的实现方法,欢迎分享~
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.