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

某浪微博的 @跟话题是怎么存起来的?

  •  
  •   ohyeahhh · 2020-09-22 10:23:24 +08:00 · 2480 次点击
    这是一个创建于 1283 天前的主题,其中的信息可能已经有所发展或是发生改变。

    项目需要做一个跟微博一样的功能,发动态的时候可以 @用户,还可以添加话题,而且点击 @的用户或者话题能够跳转,这种需要怎么存的,初步想法是给这俩加上 html 标签,因为还要变色。背景是要给 app 内用的,我们用 h5 页面来实现

    12 条回复    2020-09-23 03:52:02 +08:00
    laoyur
        1
    laoyur  
       2020-09-22 10:29:06 +08:00 via Android
    说起来可能很丢人,一大段经过了多次转推多次 at 的长内容,我甚至都分不清哪段话是谁说的……
    TomatoYuyuko
        2
    TomatoYuyuko  
       2020-09-22 10:39:18 +08:00
    遇到过同款 tx 面试题,我的当时的回答是记录特殊符号的位置,全文存储字符串,再加一个特殊位置的存储,渲染的时候再处理成特殊标签
    huifer
        3
    huifer  
       2020-09-22 11:02:07 +08:00
    @返回的信息如下{"id":1,"login_name":"huifer"}, 前端将 login_name 用来放在页面上显示. 贴上<a>标签或者其他跳转标签. 将整个文本存储到 DB. # 也是类似操作

    github 上的一个地址

    <p><a class="user-mention" data-hovercard-type="user" data-hovercard-url="/users/huifer/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/huifer">@huifer</a> test</p>

    具体如果还想存储的详细一些,可以将 @和#切割出来. 在存储
    [{"@index":1,value:"user_id"}]
    opengps
        4
    opengps  
       2020-09-22 11:13:51 +08:00
    就是个关键字替换逻辑, @id+空格,检索下是否包含此 id 用户,数据库只存文本应该足够,数据库处理通知逻辑
    mingyec88
        5
    mingyec88  
       2020-09-22 14:05:48 +08:00
    @laoyur 原来有这困惑的不是我一个人哈哈哈
    janda
        6
    janda  
       2020-09-22 14:28:40 +08:00
    @huifer 相当于是数据库存储富文本是吧、然后显示的时候就解析成 html
    huifer
        7
    huifer  
       2020-09-22 16:06:27 +08:00
    @janda yep 从存储上直接放富文本还是蛮快的. 或者 占位符 然后通过后面的 json 将占位符替换掉
    poorcai
        8
    poorcai  
       2020-09-22 16:24:22 +08:00 via iPhone
    我也想知道。话说 v 站是不是也有这个功能?
    v2exblog
        9
    v2exblog  
       2020-09-22 17:52:15 +08:00
    同问,这种东西在大流量高并发下是怎么实现的
    songco
        10
    songco  
       2020-09-22 23:47:34 +08:00 via iPhone
    原文存储,展示时解析转换不就挺好

    我记得这玩意比较麻烦的是量大的时候怎么通知 followers 还有被 @的人
    no1xsyzy
        11
    no1xsyzy  
       2020-09-23 03:50:41 +08:00
    @songco 这个好像 reddit 写过一篇技术文章?只记得用的 kafka
    no1xsyzy
        12
    no1xsyzy  
       2020-09-23 03:52:02 +08:00
    目前看下来最稳健的还是 Twitter 的办法。
    前端时间回过一贴 https://www.v2ex.com/t/704946#r_9470684
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3756 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 00:15 · PVG 08:15 · LAX 17:15 · JFK 20:15
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.