随机推荐
<ol>
<li>如果推荐方式是['video', 'audio', 'image', 'new']
1.1 从全局变量中提取对应的概念。
1.2 随机打乱概念的顺序,然后抽取概念的对象,直到数量为前端返回对象数量的2倍
1.3 过滤掉已经推荐过的对象列表
1.4 随机打乱对象列表,获取指定数量的对象的数据</li>
<li>推荐模式是综合,如果用户是冷启动
2.1 从全局变量中提取初始概念列表
2.2 根据概念的权重,进行随机抽取概念对应的对象主键
2.3 进行主键拓展,
2.4 过滤掉已经推荐过的对象列表
2.5 随机打乱对象列表,获取指定数量的对象的数据</li>
<li>推荐模式是综合,如果用户已经存在兴趣表
3.1 获取用户对象兴趣表和概念兴趣表
3.2 从对象兴趣表中随机抽取一定数量的主键
3.3 从概念兴趣表,根据概念的权重随机抽取概念对应的主键
3.4 进行主键拓展
3.5 过滤主键
3.6 随机打乱对象列表,获取指定数量的对象的数据</li>
</ol>
<p><strong>主键拓展</strong></p>
<ol>
<li>实例化主键</li>
<li>如果没有获取主键的relation_stat,抽取的类型为articles,images,audios,videos ,获取对应的概念列表名单,打乱概念列表名单,抽取前三个概念关联的对象主键</li>
</ol>
<p><strong>过滤主键</strong></p>
<ol>
<li>利用redis的有序集合可以进行差集</li>
</ol>
<p><strong>兴趣表</strong></p>
<ol>
<li>前端请求一个接口</li>
<li>number 计算兴趣表</li>
<li>计算每个主键对应的总浏览时间 作为权重</li>
<li>如果对象主键中有资源概念,然后从主键中抽取relation_snapshot抽取非资源类型的主键,权重是主键评分</li>
<li>检查这个是否是有兴趣表,检查用户等级,决定兴趣表的长度,没有兴趣表直接写入短期对象兴趣表。短期概念兴趣表是由所有主键按照概念进行聚合,权重是对象的浏览时长综合</li>
<li>有兴趣表,</li>
</ol>