Solo 标签聚合分类

本贴最后更新于 2042 天前,其中的信息可能已经事过景迁

本文是《Solo 从设计到实现》的一个章节,该系列文章将介绍 Solo 这款 Java 博客系统是如何从无到有的,希望大家能通过它对 Solo 从设计到实现有个直观地了解、能为想参与贡献的人介绍清楚项目,也希望能为给重复发明重新定义博客系统的人做个参考 ❤️

标签聚合分类

  1. 后台定义分类,并配置该分类包含的标签
  2. 查询某个分类文章列表时通过 分类->标签集->标签关联的文章 进行聚合

也就是说一篇文章在编辑时仍然是只需要打标签,访问分类时会根据该分类包含的标签将文章筛选出来。这是一个自底向上的信息架构,更灵活一些。

信息架构

大部分博客系统的信息架构都是自顶向下的:

  • 一篇文章只能属于一个分类
  • 分类在发布文章时就已固定

这会带来几个问题:

  • 有的文章很难决定属于某个分类
  • 随着文章越来越多,想要修改文章分类非常困难
  • 分类可能具有时效性,固定分类没法与时俱进

而聚合分类就是来解决这些问题的,并且向前兼容:

  • 一个分类包含多个标签,分类和标签是多对多
  • 浏览分类时根据标签动态聚合出文章列表
  • 设置分类可以随时灵活调整

关于信息架构更多的知识,推荐两本书:《用户体验要素》《信息架构》

分类-标签文章列表查询

查询逻辑实现分为 3 个步骤:

  1. 根据分类 id 查询分类下的标签,得到标签 id 列表
  2. 根据标签 id 列表 IN 查询标签-文章关联表,得到文章 id 列表
  3. 根据文章 id 列表 IN 查询文章表,得到文章列表

没有使用数据库层的关联查询,设计思路请看 Solo 表结构,具体代码请参考 ArticleQueryService#getCategoryArticles 方法。

  • Solo

    Solo 是一款小而美的开源博客系统,专为程序员设计。Solo 有着非常活跃的社区,可将文章作为帖子推送到社区,来自社区的回帖将作为博客评论进行联动(具体细节请浏览 B3log 构思 - 分布式社区网络)。

    这是一种全新的网络社区体验,让热爱记录和分享的你不再感到孤单!

    1435 引用 • 10056 回帖 • 489 关注
  • 设计
    115 引用 • 797 回帖 • 1 关注
  • 文档
    56 引用 • 1289 回帖 • 2 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...