简略记录一下举荐零碎设计的思路,SQL 不是最终的 SQL,只是提供一种思路。对于举荐总得无非是基于用户举荐和基于举荐内容举荐这两种
一、基于用户的个性化举荐
千人千面
办法 1,根据用户浏览内容属性间接举荐(《相似最间接的关键词搜寻后果》)
以后用户的历史记录表
- {运动鞋, 李宁, 价格 220, 男}
- {运动鞋, 匹克, 价格 240, 男}
- {运动鞋, 匹克, 价格 200, 男}
举荐产品策略
SELECT * FROM t_goods WHERE cat_name = "运动鞋" AND 品牌 IN ("李宁","匹克") AND price BETWEEN 200 AND 240 AND gender = "男"
办法 2,剖析用户行为生成标签(《你可能还喜爱》)
用户历史记录表
- {运动鞋, 李宁, 价格 220, 男}
- {运动鞋, 匹克, 价格 240, 男}
- {运动鞋, 匹克, 价格 200, 男}
1. 剖析用户历史为用户贴标签
用户标签
- 男性
- 国产爱好者
- 中等支出人群
- 年老
2. 查问举荐内容前,兑换成商品标签
商品标签
- 男鞋
- 国产牌子
- 中等价位
- 年老款
举荐产品策略
SELECT * FROM t_goods_tags WHERE tags_name IN (男鞋, 国产牌子, 中等价位, 年老款,)
办法 3,找出有同样趣味的群体(《其余用户浏览并还买了》)
用户历史记录表
- {运动鞋, 李宁, 价格 220, 男}
- {运动鞋, 匹克, 价格 240, 男}
- {运动鞋, 匹克, 价格 200, 男}
1. 找出有同样浏览记录的人群
SELECT user_id FROM t_goods_history WHERE goods_id IN (1,2,3)
后果:
- 男 B
- 男 C
2. 找出该些用户的其余浏览记录,而后举荐进来
SELECT * FROM t_goods_history WHERE user_id IN ("男 B","男 C") ADN goods_id NOT IN (1,2,3)
二、基于物品内容的举荐
实用于用户首次进来无历史行为
办法 1,简略根据商品的属性举荐同款
用户以后拜访的商品
- {运动鞋, 李宁, 价格 220, 男}
找出同款产品的举荐产品策略
SELECT * FROM t_goods WHERE cat_name = "运动鞋" AND 品牌 IN ("李宁") AND gender = "男"
办法 2,根据相似性举荐
用户以后拜访的商品
- {运动鞋, 匹克, 价格 240, 男}
1. 转换成以后商品的标签
- 分类:运动鞋
- 品牌品位:公众
- 品牌类型:国产
- 价格:中等
- 样式:男
- 年龄段:年老款
2. 抉择数据库中中热门在售产品进行批量打分。分数越高,与该商品越类似。并把每个商品的打分后果存进 t_goods_socre 表
譬如:
if($goodsTags['样式']== '年老款'){$score += 10;}
if($goodsTags['上市工夫'] == '跟该商品上市工夫差不多几年'){$score += 5;}
.....
3. 举荐产品策略如下
SELECT * FROM t_goods_socre WHERE goods_id = 1 order by score desc limit 10