本文是《Solo 从设计到实现》的一个章节,该系列文章将介绍 Solo 这款 Java 博客系统是如何从无到有的,希望大家能通过它对 Solo 从设计到实现有个直观地了解、能为想参与贡献的人介绍清楚项目,也希望能为给
重复发明重新定义博客系统的人做个参考 ❤️
标签聚合分类
- 后台定义分类,并配置该分类包含的标签
- 查询某个分类文章列表时通过
分类->标签集->标签关联的文章
进行聚合
也就是说一篇文章在编辑时仍然是只需要打标签,访问分类时会根据该分类包含的标签将文章筛选出来。这是一个自底向上的信息架构,更灵活一些。
信息架构
大部分博客系统的信息架构都是自顶向下的:
- 一篇文章只能属于一个分类
- 分类在发布文章时就已固定
这会带来几个问题:
- 有的文章很难决定属于某个分类
- 随着文章越来越多,想要修改文章分类非常困难
- 分类可能具有时效性,固定分类没法与时俱进
而聚合分类就是来解决这些问题的,并且向前兼容:
- 一个分类包含多个标签,分类和标签是多对多
- 浏览分类时根据标签动态聚合出文章列表
- 设置分类可以随时灵活调整
关于信息架构更多的知识,推荐两本书:《用户体验要素》、《信息架构》。
分类-标签文章列表查询
查询逻辑实现分为 3 个步骤:
- 根据分类 id 查询分类下的标签,得到标签 id 列表
- 根据标签 id 列表
IN
查询标签-文章关联表,得到文章 id 列表 - 根据文章 id 列表
IN
查询文章表,得到文章列表
没有使用数据库层的关联查询,设计思路请看 Solo 表结构,具体代码请参考 ArticleQueryService#getCategoryArticles 方法。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于