想实现一个 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
有更好的实现方法,欢迎分享~