首页 > 怎么依据当前文章Tags查询出相关文章?

怎么依据当前文章Tags查询出相关文章?

如题,因项目较小,Tags是作为一个字段存储在文章表的,多个关键词以逗号分隔,并未分表存储。
SqlAlchemy+SQLite+Flask


tag 不要用逗号隔开, 每个就是一条新纪录。


我也想问这样的问题啊,一个字段存一个tag可以做,但是一个字段存多个tag不知道了。顶一个。


回头一看和我想的不一样,我想问的是怎么实现tag标签的排序,标签按点击的权重进去排序,点击数量最多排在前边。

你这个问题我应该可以回答。首先对tag字段建全文索引。然后把mysql的配置改一下 ft_min_word_len 默认是4 中文是一个字符2字节,改个成1吧。这里不需要什么分词软件,因为你的tag是有分词标记过了的,所以,把tag标签里边的逗号换成空格,mysql全文查找语句SELECT * FROM tableName WHERE MATCH (tags) AGAINST ('螃蟹在晨跑' IN BOOLEAN MODE);
mysql低版本可能不支持,我之前用的msyql5.1是查不到中文的,后来换成5.5就好了,其他版本没测试过。


不知道你说的相关文章是不是指命中其中任意一个关键字就叫相关

1.先取出当前文章的 tags
select tags from article where id=x
2.再对 tags 按逗号分割取出当前包含的各个 tags
3.最后按各个 tag 取文章
select * from article where tags like '%SqlAlchemy%' or tags like '%SQLite%' or tags like '%Flask%'


每条tag一个记录 有关联表 用hasMany的思想去做


提供一个思路。

建两张表:
tags, posts

post:

id: id,
name: name,
....

tag:

id: id,
name: name,
post_id: 外键,post.id
...

  1. 当前 post.id=5;
  2. A,先从 tags 中查出所有 post_id等于5 的 tags.name;
  3. B,再从 tags 中查出所有 post_id不等于5 且 tags.name等于或类似A.name 的 tags.post_id;

    SELECT B.post_id FROM tags
    WHERE B.name IN
    (SELECT A.name, A.post_id FROM tags WHERE A.post_id=5) A
    AND B.post_id<>5

这条语句是用的 in 的查法,不过……我也不保证正确。希望可以帮到楼主。

----- 更新 ——————
才看到楼主说的本来是 tags 以逗号分隔的……sorry。

【热门文章】
【热门文章】