现在,个性化推荐几乎是社交软件的标配了,尤其是基于地理位置、兴趣爱好、在线状态等多维度的个性化推荐。
我对这个应用场景的实现非常感兴趣,自己也在尝试实现。我之前也请教过基于地理位置的实现方案http://www.zhihu.com/question/32205786,应该说,PostgreSQL是最好的方案。不过由于一些原因(比如阿里云最近才支持PostgreSQL,
而且目前还没有在海外节点部署),所以我最终选择的方案是MySQL + ElasticSearch(简称ES)。
需求大概是这样的:
1. 可以对每一个用户进行多维度的个性化推荐,并且可以设置不同维度的比例,比如:地理位置:兴趣爱好:在线状态=7:2:1;
2. 推荐用户具有不重复性:如果样本足够,推荐应该是不重复的;如果样本不够,则推荐的用户在一段时间(比如一周)内是不重复的;
我初步的方案并没有优雅地解决问题,这里仅抛砖引玉,希望能得到大家的意见,开阔一下思路:
不过,该方案存在的问题有:
请大家指点(不仅限于上面的方案),尤其是有过类似经验的朋友,谢谢!!!