首页 > 代码库 > 推荐系统根据最近浏览进行推荐
推荐系统根据最近浏览进行推荐
前些日子,公司要求做推荐系统,不言而喻,推荐系统对于电商来说是很有好处的。当然我们是刚开始做,还得从简单的开始做,首先第一版是根据用户最近浏览的进行推荐。接下来,可能要根据相似用户进行相似用户的推荐。这样还要对会员进行分等级。所以后面的工作还有很多。
博客是个好东西,我热衷于博客记录下我做过的每一件事。
实现的过程如下:
流程图:
思路:
实现的步骤为:
1、得到用户信息。
技术实现:抓取用户最近浏览的一款商品的 SKUid;同时获取用户的UV(独立访客),这样用户一开网页我们就知道是哪个用户了。
2、对用户浏览的商品分析出相似商品。
技术实现:拿到SKUid进行分析相同类目(Cid)下的SKUid。这样获得了商品的相似度。然后再根据价格进行排序,取价格最靠近当前浏览的十个SKUid。
3、页面展示:
技术实现:分析完数据后,我们根据UV(独立访客)给用户推荐同一类目下价格接近的商品。js文件将会将推荐的商品在页面渲染出来。
过程中遇到的问题:
问题一:
分析器5秒跑一次,但是每一个新UV进来,就会往数据库多加一条数据。数据量大了,分析器分析起来就慢了;
解决办法:
增加一个字段为存放时间戳,当新增一条数据,存一个时间戳,如果该用户继续浏览另一个ITEM页面,即更新skuid、价格、等信息外,还要更新保存的时间戳为当前的时间,这样其实就好办了,我就只分析当前时间就在最近五分钟左右的数据。因为这五分钟的用户都是最近的用户,还有正在浏览页面的用户。这样就解决了分析器跑不动的问题。也过滤掉了重复分析的问题。
问题二:
毫无疑问,这样下去表会越来越大,查询的性能也会慢慢降低。
解决办法:
方案一: 这样其实我们可以另外建一张表,只用来保存结果的表。或者就两个字段,一个是会员名,一个就是推荐的skuid信息。不是会员的用户我们只保存最近的两三天的推荐记录。
方案二:不建表,将结果保存到memcache。保质期为一个月。
问题三:
怎样防止被刷;
解决方案:
添加一个字段,每次该条记录变动一次,添加的字段加一,当天超过一千的,进行屏蔽。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。