简略记录一下举荐零碎设计的思路,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