是关于抖音或者知乎,这种评论区评论的设计,一般会设计成什么样的数据存储结构呢。
他们那种可以嵌套也可以往下延伸的这种。
不是 v 站这种盖楼的论坛模式。
然后感觉有些视频评论的加载量也挺恐怖的。
不是工作任务,单纯是好奇,有知道的麻烦分享下,栓 Q~
顺便延伸一下,如果加上网传的信息茧房, 不同人看到的评论内容是不同的,又该怎么控制呢。
1
hauibojek 2023-12-21 09:56:55 +08:00
我觉得是分了两级,一级是视频的评论,二级是某个评论下的评论
|
2
google2020 2023-12-21 10:00:54 +08:00
1 、单条评论记录加个 parent id 就可以了,顶级是 0 ,回复就是回复对应的评论的 ID
2 、跟推荐视频一样,给评论加上标签,第一条件先筛选出当前视频的评论,第二条件按标签过滤 |
3
tool2d 2023-12-21 10:02:16 +08:00
我个人偏爱 no-sql 数据结构,处理这种树状结构的评论很合适。
一般来说只要索引能做好,用不用传统 sql 也挺好的。 当然有些时候公司项目没办法,sql 能让代码受众广,更好维护。 |
4
syam OP @hauibojek 我也觉得如此,但是有个问题,评论不比实时通讯软件,你做二级评论的时候一级评论删内容,应当怎么反馈呢? 用户可能不好理解,我明明看到了一级评论但是我评论不上以及评论的情况
|
5
phytry 2023-12-21 10:08:26 +08:00
@syam 删除内容只是标记这条记录删除吧,parent id 还是一样不变的,只是前端展示的时候拿不到评论数据,显示当前评论已删除了,后面的逻辑保留就好了,后端做好不能评论已标记删除评论的逻辑就好了吧
|
7
syam OP |
8
yKXSkKoR8I1RcxaS 2023-12-21 10:59:40 +08:00
只用加一个 parent_id 字段,id,video_id,parent_id ,信息茧房的实现原理是靠打 Tag 实现的,有个 Tag 库,里面记录了不同信息所打的 Tag 和权重以及相似 Tag ,比如一些评论打上了女性友好的 Tag ,那么女性用户看的时候就根据 Tag 库里面的 Tag 和权重进行筛选、优先展示
|
9
jiannei 2023-12-21 11:19:54 +08:00
数据存储结构大概是
![评论数据]( https://raw.githubusercontent.com/jiannei/snc-pro/master/images/202312211113671.png) 然后参照抖音设计展示效果(一级评论、二级回复,嵌套回复显示▶️) ![评论展示]( https://raw.githubusercontent.com/jiannei/snc-pro/master/images/202312211118243.png) 实际效果: https://sinan.fun/posts/6 |