这是我参与11月更文挑战的第5天,活动详情查看:2021最后一次更文挑战
“上次写的思路还在上次的文章中”
之前写了短视频推荐打散算法的思路:【图解】短视频推荐打散算法
,为了保证推荐视频的层次感,不让相同作者的视频堆积在一起,使用springboot
+java
简单的实现了单轮询打散算法。
以下只是自己进行打散的逻辑,可能有一堆坑😓,只是个实现思路。
代码实现
1 | java复制代码@Slf4j |
代码逻辑解释
queryVideo
是获取推荐视频的入口方法,排序好的视频id列表(videos
)和视频与作者id(authors
)关系映射缓存在redis
中。
首先判断是否显示固定位的视频,如果显示,就将fixList
结果列表中对应槽放入固定位视频,并记录作者在authors
集合中。
查询出全部准备推荐的视频,放到集合dataSet
中。
准备好数据后进入buildData
中递归将未放到结果集中的视频ID放入结果集,递归退出条件是没有临时记录的作者信息tmp
,tmp
为空就意味着result
已经满了。
参考
- redis工具类参考:SpringBoot 操作 Redis 详解
本文转载自: 掘金