系列隨筆:
(二)基於商品屬性的相似商品推薦算法——Flink SQL實時計算實現商品的隱式評分
(三)基於商品屬性的相似商品推薦算法——批量處理商品屬性,得到屬性前綴及完整屬性字符串
(四)基於商品屬性的相似商品推薦算法——推薦與評分高的商品屬性相似的商品
2020.04.15 補充:協同過濾推薦算法.pptx
提取碼:4tds
整體框架及處理流程
流程圖:
推薦N個商品,具體步驟:
1)用戶行為日志埋點(這里使用的是阿里雲log service);
2)Flink SQL(實時計算)統計用戶行為對商品的隱式評分,保存到 rc_member_goods 表;
3)預處理平台全部商品,計算其屬性前綴或完整屬性,保存到 rc_goods_properties 表;
4)rc_member_goods表關聯rc_goods_properties表按評分倒序查詢當前用戶商品,得到2個商品(商品A和商品B)及其他的屬性信息;
5)用這兩個商品的屬性前綴通過rc_goods_properties表查詢相同屬性前綴的其他商品;
6)查詢到的商品分別與商品A、商品B對比計算相似值;
7)相似值倒序,按比例取N個商品;注:如果相似商品數量不足N個,則補充銷售高的其他商品;
8)返回推薦結果
數據庫設計:
CREATE TABLE `rc_config` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增', `event` varchar(50) DEFAULT NULL COMMENT '理點事件', `code_name` varchar(20) DEFAULT '' COMMENT '商品編碼的字段名', `score` smallint(5) unsigned NOT NULL DEFAULT '0' COMMENT '得分', `status` tinyint(1) unsigned DEFAULT '1' COMMENT '狀態', `remark` varchar(50) DEFAULT NULL COMMENT '備注', PRIMARY KEY (`id`), UNIQUE KEY `idx_event` (`event`) USING BTREE ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 COMMENT='商品推薦配置表';
CREATE TABLE `rc_goods_properties` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增ID', `goods_code` int(11) unsigned NOT NULL COMMENT '商品編號', `property_prefix` varchar(100) DEFAULT NULL COMMENT '屬性前綴', `properties` varchar(200) DEFAULT NULL COMMENT '屬性', `update_time` timestamp NULL DEFAULT NULL COMMENT '更新時間', PRIMARY KEY (`id`), KEY `idx_goods_code` (`goods_code`) USING HASH, KEY `idx_prefix` (`property_prefix`) USING HASH ) ENGINE=InnoDB AUTO_INCREMENT=154297 DEFAULT CHARSET=utf8mb4 COMMENT='商品屬性表';
CREATE TABLE `rc_member_goods` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增ID', `member_code` int(11) unsigned DEFAULT NULL COMMENT '會員編碼', `cid` varchar(100) CHARACTER SET utf8 DEFAULT NULL COMMENT '設備ID', `goods_code` int(11) unsigned NOT NULL COMMENT '商品編碼', `score` int(10) NOT NULL DEFAULT '0' COMMENT '評分', `update_time` timestamp NULL DEFAULT NULL COMMENT '更新時間', PRIMARY KEY (`id`) USING BTREE, UNIQUE KEY `idx_unique` (`member_code`,`cid`,`goods_code`) USING BTREE, KEY `idx_cid` (`cid`) USING BTREE ) ENGINE=InnoDB AUTO_INCREMENT=2777342 DEFAULT CHARSET=utf8mb4 COMMENT='用戶商品評分表';
下一節:(二)基於商品屬性的相似商品推薦算法——Flink SQL實時計算實現商品的隱式評分