V2EX 主题和评论按更新时间实时排序是怎么做到的 - V2EX
markme

V2EX 主题和评论按更新时间实时排序是怎么做到的

  •  
  •   markme Jul 23, 2016 3006 views
    This topic created in 3580 days ago, the information mentioned may be changed or developed.

    最近在学习数据库,然后模仿做了写了两张表,一章主题表 Topic , 一章主题评论表 Comment , Comment 有一个外键 topic_id 指向主题。

    然后我看 V2EX 主题的排序是同时按主题和评论交替排序的,我试了很多遍都没有成功。

    大家知道怎么实现吗,强迫症,做不出来揪心 TAT

    17 replies    2016-07-24 01:06:35 +08:00
    mathgl
        1
    mathgl  
       Jul 23, 2016
    记得 livid 提过,用 redis 做的。
    markme
        2
    markme  
    OP
       Jul 23, 2016
    @mathgl 就是 SQL 的 JOIN 加排序做不出这样的效果? Redis 加权重应该可以的
    jason19659
        3
    jason19659  
       Jul 23, 2016
    加个字段..latestDate..
    markme
        4
    markme  
    OP
       Jul 23, 2016
    @jason19659 都有,按时间排序做不到这个效果。
    mornlight
        5
    mornlight  
       Jul 23, 2016
    每个主题有一个最后更新时间,这不是最直接的思路吗
    9hills
        6
    9hills  
       Jul 23, 2016
    SQL 为啥不能实现。。。最简单方法主题加个字段 LatestUpdate ,任何对主题的修改以及新的回复都修改这个字段不就好了...
    markme
        7
    markme  
    OP
       Jul 23, 2016
    @9hills @mornlight @jason19659 嗯,谢谢各位,我懂了,这样是可以的。(我想多了,我奔着 Join 查询去想的。)
    binota
        8
    binota  
       Jul 23, 2016
    两张表, Threads_Basic 、 Threads_Posts ,
    Threads_Basic 只存主题的标题、发帖人、发帖时间
    Threads_Posts 存包含主帖在内的帖子内容、发帖人、发帖时间、对应的主帖 ID
    这样只要按发帖时间选择 Threads_Posts 再 Join Threads_Basic 就可以了
    cloverstd
        9
    cloverstd  
       Jul 23, 2016
    markme
        10
    markme  
    OP
       Jul 23, 2016
    @cloverstd 厉害,原来有这个
    ilikekindle
        11
    ilikekindle  
       Jul 23, 2016
    v2 的主题不单是靠时间排序吧?
    markme
        12
    markme  
    OP
       Jul 23, 2016
    @ilikekindle 嗯,上面讨论的这些完全可以实现这个效果。但是要考虑性能的话,就有些吃紧了。
    实际的话应该是类似 Redis 缓存加按权重排序来实现的。也可能是其他更好的方式。
    julyclyde
        13
    julyclyde  
       Jul 23, 2016
    实际上其实并不是按这个排的,没实时
    markme
        14
    markme  
    OP
       Jul 24, 2016
    @julyclyde 那就说明是有缓存或者队列存在的,有一个同步的时钟存在。
    dangyuluo
        15
    dangyuluo  
       Jul 24, 2016
    redis 排序
    lianghudou
        16
    lianghudou  
       Jul 24, 2016
    楼上一群菜鸟,把简单的功能说的神乎其神,其实就是一个 topic 表有两个最后回复时间的字段,一个是真的最后回复时间,一个是假的最后回复时间,假设这个假的最后回复时间名叫 lasttime_fake 。

    其实就是在这个假的 lasttime_fake 上做文章,逼格越高的帖子,这个 lasttime_fake 越接近真实时间,逼格很低的帖子,可能发完以后 lasttime_fake 就是 1 天前。这样就导致了一个很和谐的后果:在 V2EX 上很难见到逼格低的帖子。

    至于这逼格怎么判断的呢?可以 100%的肯定,这不全是靠算法,里面有人工的成分。
    markme
        17
    markme  
    OP
       Jul 24, 2016
    @lianghudou 嗯呐,谢谢,这也是一种。 V2EX 的管理员确实挺多的呢。
    About     Help     Advertise     Blog     API     FAQ     Solana     2646 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 56ms UTC 16:02 PVG 00:02 LAX 09:02 JFK 12:02
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86