推荐系统依据近期浏览进行推荐

前些日子,公司要求做推荐系统,不言而喻,推荐系统对于电商来说是非常有优点的。当然我们是刚開始做,还得从简单的開始做,首先第一版是依据用户近期浏览的进行推荐。接下来,可能要依据相似用户进行相似用户的推荐。这样还要对会员进行分等级。所以后面的工作还有非常多。

博客是个好东西,我热衷于博客记录下我做过的每一件事。

实现的步骤例如以下:

流程图:



思路:

实现的步骤为:
    1、得到用户信息。
技术实现:抓取用户近期浏览的一款商品的 SKUid;同一时候获取用户的UV(独立訪客),这样用户一开网页我们就知道是哪个用户了。  
 
    2、对用户浏览的商品分析出相似商品。
技术实现:拿到SKUid进行分析同样类目(Cid)下的SKUid。这样获得了商品的相似度。然后再依据价格进行排序,取价格最靠近当前浏览的十个SKUid。


    3、页面展示:
技术实现:分析完数据后,我们依据UV(独立訪客)给用户推荐同一类目下价格接近的商品。js文件将会将推荐的商品在页面渲染出来。


过程中遇到的问题:

      问题一:

  分析器5秒跑一次,可是每个新UV进来,就会往数据库多加一条数据。数据量大了,分析器分析起来就慢了;

     解决的方法:

        添加一个字段为存放时间戳,当新增一条数据,存一个时间戳,假设该用户继续浏览还有一个ITEM页面,即更新skuid、价格、等信息外,还要更新保存的时间戳为当前的时间,这样事实上就好办了,我就仅仅分析当前时间就在近期五分钟左右的数据。由于这五分钟的用户都是近期的用户,还有正在浏览页面的用户。这样就攻克了分析器跑不动的问题。也过滤掉了反复分析的问题。


    问题二:

       毫无疑问,这样下去表会越来越大,查询的性能也会慢慢减少。

    解决的方法:

       方案一: 这样事实上我们能够另外建一张表,仅仅用来保存结果的表。或者就两个字段,一个是会员名,一个就是推荐的skuid信息。不是会员的用户我们仅仅保存近期的两三天的推荐记录。

      方案二:不建表,将结果保存到memcache。保质期为一个月。


   问题三:

     如何防止被刷;

   解决方式:

     加入一个字段,每次该条记录变动一次,加入的字段加一,当天超过一千的,进行屏蔽。


posted @ 2014-09-23 09:15  mfrbuaa  阅读(384)  评论(0编辑  收藏  举报