这是一个创建于 875 天前的主题,其中的信息可能已经有所发展或是发生改变。
原则①:不让大量新回复的帖子和最新发布的帖子出现,也就是不使用 直接按照最新回复时间倒序
原则②:新发布的帖子( 0 回复)需要获得展示空间,当然会假设把 0 回复记为 1 回复,逐次+1
原则③:手指持续下拉的列表中不能出现重复帖子
原则④:新帖子在获得了高互动的情况下需要及时顶上来,也就是跑批要及时,跑批需要时间
探索的方案如下:
热门计算规则是常见的那 3 大算法,回复数、点赞数、最新回复时间等计算分值后综合排序
方案 0:在热门队列里面,延时插入新回复的内容,比如 5 个热门+2 个新内容,但是量大的情况下违背了原则④
方案 1:6 小时前回复的内容进行计算跑批,分值从高到底形成[6 小时前热门队列],6 小时内按照回复数从高到底的队列为[6 小时内新队列],首次刷新包括每次刷新,都会取[6 小时内新队列]的前 5 ,插入[6 小时前热门队列],
但是在[6 小时前热门队列]中的内容被用户回复后又跑进[6 小时内新队列]
导致刷新的第一页与第二页的内容重复,违背了原则③
方案 2:试着反过来思考[6 小时内新队列]取 5 个,插入[6 小时前热门队列]取 10 个,而热门队列只跑最新 1000 个(解决跑批时间的问题),是不是能解决去重问题呢?但是随着数据量扩大,比如 6 小时内有 100 个新内容,每次只取 5 个,需要刷新 20 次才能看到最最新的内容,违背了原则②
当然也可以在这 100 进行随机抽选,这就涉及到千人千面,目前开发范围没有那么大
方案 3:为方案 1 的迭代,或者对[6 小时内新队列]再做一次跑批,允许 6 小时内的增量为 1~1000 ,约 1 分钟内能跑完,跑完的结果有最新也有高互动的,然后再叠 6 小时前回复的队列,结果就是每次刷新会看到一堆旧热内容+新热内容
1 条回复 • 2022-07-13 19:14:57 +08:00
|
|
1
eason1874 2022-07-13 19:14:57 +08:00 1
去重不用整这些花里胡哨的,在 local 记录下当前浏览列表的所有帖子 ID ,从服务器拉取到最新 ID 列表后,排除掉跟前面重复的就行
本地去重,以推荐出名的短视频都是这样做的
|