用户兴趣表2
<ol>
<li>用户请求计算兴趣接口</li>
<li>选取用户最近的1000条对象浏览记录</li>
<li>按照对象主键进行分组,计算出每一个主键浏览时长</li>
<li>遍历主键,检查该主键对应的概念是否在资源概念列表(视频、音频、文章、新闻、图片),如果是获取对象的relation_snapshot,如果有提取对应的概念和主键写入到temp_li,提取对象的relation_stat,如果有值,提取relation_stat中peers 与概念相关的主键列表,提取前三个概念,每个概念最多10个主键。
然后判断temp_li的长度,评分每一个主键对应的权重</li>
<li>如果该用户有兴趣表,则进行数据合并
<strong>合并短期对象兴趣表</strong>
1 检查该用户之前是否已存在短期对象兴趣表,如果不存在,直接写入
2 如果有,合并短期对象兴趣表,旧短期兴趣表a 新短期兴趣表b
3 a与b 交集部分的对象,使用权重加权计算 (a1/a+b1/b)/2*(a+b)
a与b 只有a独有的对象 原来的权重上固定百分比削减 (如10%)
a与b 只有b独有的对象 直接赋值
4 检查c中对象数量是否超过该用户本身对象上限,如果超过,按照权重从高到低,移除多余的对象主键</li>
<li>写入到redis中,快照写入到mysql表</li>
</ol>
<p><strong>计算短期概念表</strong></p>
<ol>
<li>从计算出的短期对象兴趣表中的数据加工出短期概念表。</li>
<li>概念的权重是对象主键权重累加</li>
</ol>
<p><strong>推荐模式</strong></p>
<ol>
<li>选择垂直推荐模式(图集/视频/音频/新闻)
从全局变量中提取新闻所属的概念,随机抽取概念(根据概念的对象数据决定抽取的概念),根据概念抽取对象</li>
<li>用户选择综合模式(没有兴趣表)
2.1 提取默认的概念列表,根据概念权重随机抽取概念
<pre><code>init_concepts = {
u"电影": 3,
u"电子游戏": 2,
u"演员": 3,
u"动画": 2,
u"漫画": 1,
u"新闻": 12,
u"头条新闻": 12,
u"汽车": 2,
u"菜谱": 3,
u"网络小说": 3,
u"人物": 1,
u"歌手": 4,
u"音乐": 1,
u"平面模特": 2,
u"漫画单行本": 4,
u"音频节目": 2,
u"写真集": 4,
}</code></pre>
<p>2.2 根据概念抽取对象,知道抽取对象主键数是指定数量数量2倍。
2.3 根据主键进行主键拓展,提取主键的relation_stat,然后从中获取到['articles', 'images', 'audios', 'videos']有交集的类型,然后随机从提取一个类型的列表,打乱类表,取前三个概念关联的主键列表。
2.4 将主键进行去重,再过滤掉已经被抽取过的对象主键
2.5 实例化主键提取数据</p></li>
<li>用户选择综合模式(有兴趣表)
3.1. 获取用户短期概念表,然后按照概念类型生成对象。
3.2 根据兴趣表随机提取指定数量的一般数量主键(如30个则提取15个)
3.3 将主键进行合并 去重
3.4 根据主键进行拓展,提取主键的relation_stat,然后从中获取到['articles', 'images', 'audios', 'videos']有交集的类型,然后随机从提取一个类型的列表,打乱列表,取前三个概念关联的主键列表。
3.5 将主键进行去重 ,再过滤掉已经被抽取过的对象主键
3.6 实例化主键提取数据</li>
</ol>
<p>线上服务器:</p>
<pre><code>104
{"c91_oFtJKyA7": 8.0, "c54_YfqnT46s": 50.0, "c134_8YQpm5Kp": 73.0, "c520_O7vKWAvG": 23.0, "c107_3RVwY6qU": 126.0, "c134_cMDsCzfz": 24.0, "c134_qtBvoz6o": 13.0, "c54_fQsBy4fC": 25.0, "c64_ykzTj4fp": 9.0, "c107_S5m92AqT": 7.0, "c91_zqfICA5Z": 17.0, "c54_2cseXz6t": 9.0, "c125_1V4VtyF6": 55.0, "c64_ySoNoz8z": 5.0, "c134_KCaLgz8j": 7.0, "c107_MEHIWz6P": 178.0, "c95_gVaylz6z": 14.0}
{"演员": 84.0, "筛选词": 23.0, "电影": 117.0, "平面模特": 457.0, "歌手": 25.0, "电子游戏": 14.0, "网络小说": 14.0, "漫画": 55.0}</code></pre>
<p>73</p>
<pre><code>{"c107_fBc6k6qT": 29005.0, "c107_W0nu4AqT": 11.0, "c91_1rB5zz6t": 8.0, "c107_K2fcS6qT": 27.0, "c95_gSLafz6z": 5.0, "c40_FSioz5Hd": 1.0, "c54_kcJPh4fA": 1.0, "c218_2NDQKz8n": 1.0, "c107_vciaJ6qT": 14.0, "c107_YXvlaAqS": 29156.0, "c54_itXozA4s": 1.0, "c420_N2tNl46A": 1.0, "c218_0k0lhzfu": 1.0, "c91_JQ7KA46w": 1.0, "c54_javMuzfA": 1.0, "c322_0egxCzfx": 1.0, "c134_hlp3sz6x": 9.0, "c107_7L7M8AqU": 22.0, "c218_EMDJZ4fq": 1.0}
{"词汇": 1.0, "人物": 3.0, "演员": 3.0, "电影": 9.0, "歌手": 9.0, "平面模特": 58235.0, "电子游戏": 5.0, "艺人": 1.0, "昆虫": 1.0}</code></pre>