V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
syam
V2EX  ›  编程

闲来无事,问个评论模块设计的问题

  •  
  •   syam · 2023-12-21 09:50:23 +08:00 · 1391 次点击
    这是一个创建于 365 天前的主题,其中的信息可能已经有所发展或是发生改变。

    是关于抖音或者知乎,这种评论区评论的设计,一般会设计成什么样的数据存储结构呢。

    他们那种可以嵌套也可以往下延伸的这种。

    不是 v 站这种盖楼的论坛模式。

    然后感觉有些视频评论的加载量也挺恐怖的。

    不是工作任务,单纯是好奇,有知道的麻烦分享下,栓 Q~

    顺便延伸一下,如果加上网传的信息茧房, 不同人看到的评论内容是不同的,又该怎么控制呢。

    10 条回复    2023-12-21 11:33:26 +08:00
    hauibojek
        1
    hauibojek  
       2023-12-21 09:56:55 +08:00
    我觉得是分了两级,一级是视频的评论,二级是某个评论下的评论
    google2020
        2
    google2020  
       2023-12-21 10:00:54 +08:00
    1 、单条评论记录加个 parent id 就可以了,顶级是 0 ,回复就是回复对应的评论的 ID

    2 、跟推荐视频一样,给评论加上标签,第一条件先筛选出当前视频的评论,第二条件按标签过滤
    tool2d
        3
    tool2d  
       2023-12-21 10:02:16 +08:00
    我个人偏爱 no-sql 数据结构,处理这种树状结构的评论很合适。

    一般来说只要索引能做好,用不用传统 sql 也挺好的。

    当然有些时候公司项目没办法,sql 能让代码受众广,更好维护。
    syam
        4
    syam  
    OP
       2023-12-21 10:04:36 +08:00
    @hauibojek 我也觉得如此,但是有个问题,评论不比实时通讯软件,你做二级评论的时候一级评论删内容,应当怎么反馈呢? 用户可能不好理解,我明明看到了一级评论但是我评论不上以及评论的情况
    phytry
        5
    phytry  
       2023-12-21 10:08:26 +08:00
    @syam 删除内容只是标记这条记录删除吧,parent id 还是一样不变的,只是前端展示的时候拿不到评论数据,显示当前评论已删除了,后面的逻辑保留就好了,后端做好不能评论已标记删除评论的逻辑就好了吧
    syam
        6
    syam  
    OP
       2023-12-21 10:12:23 +08:00
    @phytry 懂了,受益匪浅,感谢
    syam
        7
    syam  
    OP
       2023-12-21 10:20:51 +08:00
    @tool2d 哈哈哈 是啊 自己的项目肯定舒服一些 想怎么炫技都可以
    公司害怕员工防御性编程 抵制一些花里胡哨甚至能提升性能的方案
    屁股决定脑袋给他们做出来就行
    yKXSkKoR8I1RcxaS
        8
    yKXSkKoR8I1RcxaS  
       2023-12-21 10:59:40 +08:00
    只用加一个 parent_id 字段,id,video_id,parent_id ,信息茧房的实现原理是靠打 Tag 实现的,有个 Tag 库,里面记录了不同信息所打的 Tag 和权重以及相似 Tag ,比如一些评论打上了女性友好的 Tag ,那么女性用户看的时候就根据 Tag 库里面的 Tag 和权重进行筛选、优先展示
    jiannei
        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
    syam
        10
    syam  
    OP
       2023-12-21 11:33:26 +08:00
    @jiannei 大佬,牛逼
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3448 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 04:31 · PVG 12:31 · LAX 20:31 · JFK 23:31
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.