Database design “如何存储”;购买此产品的客户也购买了;
我正在构建一个类似于亚马逊的“购买此产品的客户也购买了此产品”的功能。我有大约6年的订单来挖掘这些数据,并且显然会继续使用新订单的数据进行更新 我想到了几个问题:Database design “如何存储”;购买此产品的客户也购买了;,database-design,amazon,recommendation-engine,Database Design,Amazon,Recommendation Engine,我正在构建一个类似于亚马逊的“购买此产品的客户也购买了此产品”的功能。我有大约6年的订单来挖掘这些数据,并且显然会继续使用新订单的数据进行更新 我想到了几个问题: 如何存储这些关系?我正在考虑一个包含productA、productB和count(或rank)的简单表。这是否足够 我不认为旧数据和新数据一样重要。如何对更新的数据进行优先级排序 编辑:这个网站只销售一种产品,所以几乎所有东西都是相关的,不需要过滤。我也希望尽可能地简化这个过程——数据已经存在于我的数据库中,我正在寻找计算和存储它的
我真的认为您应该看看已经存在的东西(例如在sourceforge或github上) 就我个人而言,我不会存储这些数据。我将创建一个视图,动态选择要建议的产品 一个简单的实现可能是:
CREATE TABLE `itemassoc` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`tenantId` int(11) NOT NULL DEFAULT '0',
`itemFromId` int(11) NOT NULL DEFAULT '0',
`itemFromTypeId` int(11) unsigned NOT NULL DEFAULT '0',
`assocTypeId` int(11) unsigned NOT NULL DEFAULT '0',
`assocValue` double NOT NULL DEFAULT '0',
`itemToId` int(11) NOT NULL DEFAULT '0',
`itemToTypeId` int(11) unsigned NOT NULL DEFAULT '0',
`sourceTypeId` int(11) NOT NULL DEFAULT '0',
`sourceInfo` varchar(250) DEFAULT '0',
`viewTypeId` int(11) unsigned NOT NULL DEFAULT '0',
`active` tinyint(1) NOT NULL DEFAULT '1',
`changeDate` datetime NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `unique_itemassoc` (`tenantId`,`itemFromId`,`itemFromTypeId`,`itemToId`,`itemToTypeId`,`assocTypeId`,`sourceTypeId`),
KEY `idFrom_assoc` (`itemFromId`,`itemFromTypeId`,`assocTypeId`,`tenantId`),
KEY `recommender` (`itemFromId`,`itemFromTypeId`,`itemToTypeId`,`assocTypeId`,`tenantId`,`active`)
) ENGINE=InnoDB AUTO_INCREMENT=38480 DEFAULT CHARSET=latin1 COMMENT='Table containing item associations'
基本上
可以导入您的“购买操作”并计算其中的规则 为什么这还不够?这个网站只卖一种商品,所以我不需要太多的东西,除了它们是一起买的。嗯,我不知道你的网站只卖一种商品。通常情况下,你不会试图知道什么样的人买什么样的产品,而是什么样的人买什么样的产品。