最近在学习数据库,然后模仿做了写了两张表,一章主题表 Topic , 一章主题评论表 Comment , Comment 有一个外键 topic_id 指向主题。
然后我看 V2EX 主题的排序是同时按主题和评论交替排序的,我试了很多遍都没有成功。
大家知道怎么实现吗,强迫症,做不出来揪心 TAT
|  |      1mathgl      2016-07-23 13:38:29 +08:00 记得 livid 提过,用 redis 做的。 | 
|  |      3jason19659      2016-07-23 13:59:44 +08:00 加个字段..latestDate.. | 
|  |      4markme OP @jason19659 都有,按时间排序做不到这个效果。 | 
|  |      5mornlight      2016-07-23 14:14:01 +08:00 每个主题有一个最后更新时间,这不是最直接的思路吗 | 
|  |      69hills      2016-07-23 14:19:10 +08:00 SQL 为啥不能实现。。。最简单方法主题加个字段  LatestUpdate ,任何对主题的修改以及新的回复都修改这个字段不就好了... | 
|  |      7markme OP | 
|  |      8binota      2016-07-23 17:45:42 +08:00 两张表, Threads_Basic 、 Threads_Posts , Threads_Basic 只存主题的标题、发帖人、发帖时间 Threads_Posts 存包含主帖在内的帖子内容、发帖人、发帖时间、对应的主帖 ID 这样只要按发帖时间选择 Threads_Posts 再 Join Threads_Basic 就可以了 | 
|  |      9cloverstd      2016-07-23 19:14:55 +08:00 | 
|      11ilikekindle      2016-07-23 22:00:50 +08:00 v2 的主题不单是靠时间排序吧? | 
|  |      12markme OP @ilikekindle 嗯,上面讨论的这些完全可以实现这个效果。但是要考虑性能的话,就有些吃紧了。 实际的话应该是类似 Redis 缓存加按权重排序来实现的。也可能是其他更好的方式。 | 
|      13julyclyde      2016-07-23 23:54:51 +08:00 实际上其实并不是按这个排的,没实时 | 
|  |      15dangyuluo      2016-07-24 00:49:22 +08:00 redis 排序 | 
|      16lianghudou      2016-07-24 00:58:05 +08:00 楼上一群菜鸟,把简单的功能说的神乎其神,其实就是一个 topic 表有两个最后回复时间的字段,一个是真的最后回复时间,一个是假的最后回复时间,假设这个假的最后回复时间名叫 lasttime_fake 。 其实就是在这个假的 lasttime_fake 上做文章,逼格越高的帖子,这个 lasttime_fake 越接近真实时间,逼格很低的帖子,可能发完以后 lasttime_fake 就是 1 天前。这样就导致了一个很和谐的后果:在 V2EX 上很难见到逼格低的帖子。 至于这逼格怎么判断的呢?可以 100%的肯定,这不全是靠算法,里面有人工的成分。 | 
|  |      17markme OP @lianghudou 嗯呐,谢谢,这也是一种。 V2EX 的管理员确实挺多的呢。 |