java异步框架feed,Feed流及回复、转发的关系

信息流的现有方案

信息的流动,已经从传统的文章-回复发展成信息流的形式,但是信息流的组织形式,由于其复杂性,想把信息流非常合理的展示出来,还是挺麻烦的。

考虑到一种比较复杂的关系,如下:

topic-root-1 // 主题帖子

- reply-01 // 对主题的回复,楼层帖子

- reply-floor-01-01 // 回复reply-01

- reply-reply-01-01-01 // 回复reply-floor-01-01

- reply+forward-01-01 // 回复且转发 reply-floor-01-01

- reply-floor-01-02

- reply-02

- forward-01

- reply-03

- reply+forward-01

topic-root-2

reddit,网易回帖是基于回复缩进的展示格式,就是,视觉上的最直观的就是回复的回复会空两格,类似于:

一个典型的层级关系的回复列表:

topic

- reply-1

- reply-1-1

- reply-1-1-1

- reply-1-1-1

- reply-1-1-2

- reply-1-1-2-1

- reply-1-1-2-2

- reply-1-1-3

- reply-1-2

- reply-1-2-1

- reply-1-3

- reply-1-4

- reply-2

曾经这种格式很流行,但目前大部分都改成了最多两级的形式, 然后如果是对回复的回复,会@回复的作者,然后再内部记录这个post所回复的id,知乎,贴吧,雪球,头条,微博都是这种形式。

然而,大家对待回复的等级并不相同。

大部分对于回复的处理,都是主贴的附加属性,没有被真正的重视,例如,在贴吧,头条里,回复只能是二等公民,无法展示在feed流中;而雪球,微博,回复也是可以被转发的,然后,通过基于用户的关注关系和推荐算法,回复也可以被独立的展示在Feed流中。

信息流设计

post的子子孙孙,有点像git树一样,每次对回复的回复,都是相当于创建了一个分支。

因此,可以把post和reply合并为一起,保存着同一个表中,在存储层面不区分区分post和reply;在逻辑层面,把reply提升到与post的同等地位,reply也可以点赞,收藏,转发,分享等等。

转发

转发可以被设计为一个独立的动作,转发就是纯粹转发,不能在转发的基础上回复;如果要回复,则需要在回复的时候选择是否转发。

这样的好处是,易于追踪讨论的主题,而不会被一些转发中断信息流。此外,对于转发的回复,可以挂在被转发的文章下,更加集中信息流。

回复

对话

设计

综合上面的分析,将post设计如下:

title: string

content: string

rootId: 如果是独立的内容,rootId为0;如果是对主题的回复,rootId为这个回复的主题id;如果是对回复帖子的回复,rootId为回复帖子的rootId

replyId: 如果是对主题的回复,replyId和rootId一样,都是主题id;如果是对回复帖子的回复,replyId是被回复的帖子id;

branchId: 如果是对主题的回复,branchId和rootId一样,都是主题id;如果是对回复帖子的回复,branchId是该层的楼层帖子id;(被回复的brandId)

forwardId: 如果不是转发,forwardId为0;如果是转发,forwardId为被转发的主题id

midId: 如果是对转发帖子的回复,则设置midId是转发帖子的Id,上面的rootId,replyId, branchId设置为转发帖子

关联关系

用户的follow关系,以及如何查询用户follow的posts,在数据量较小的情况下,可以简单的通过sql查询来完成。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值