我在数据库中需要“买了这个项目的顾客也买了什么”?

时间:2010-01-03 11:08:24

标签: mysql recommendation-engine

亚马逊有“购买此商品的客户也购买了”。

我想知道并希望将其添加到我制作的购物车中。

数据库中需要哪些字段?任何网站,博客或资源?

你能建议我应该如何编码它的机制吗?

7 个答案:

答案 0 :(得分:13)

答案 1 :(得分:6)

您可能不需要数据库中的任何新字段 - 只需保留订单的历史记录即可。然后,当您想要找到其他人购买的清单时:

  1. 选择包含商品X
  2. 的订单的所有用户
  3. 对于每个用户,总计他们购买的所有其他用户
  4. 获得前3/5 /无论你的名单是什么。

答案 2 :(得分:3)

这不是太棘手。假设您有以下表格:

  • 客户,主键CustomerID
  • 产品,主键ProductID
  • 订单,主键OrderID,外键CustomerID
  • OrderItems ,主键OrderItemID,外键OrderID,ProductID

要查找您寻找的产品,您需要找到购买该特定产品ID的客户:

SELECT CustomerID
FROM (Customers INNER JOIN (Orders INNER JOIN OrderItems))
WHERE OrderItem.ProductID = <your product id here>

然后,您需要获得客户购买的其他产品:

SELECT ProductID
FROM (Customers INNER JOIN (Orders INNER JOIN OrderItems))
WHERE (Customer = <given customer ID>) AND (ProductID <> <your product id>)

然后选择前几个产品,你即将参加比赛。

注意:我是一个数字家伙。 DB大师将能够在1个查询中执行此操作! :)

答案 3 :(得分:1)

您需要订单历史记录,以便检查与用户当前正在查看的商品一起购买的其他商品。

答案 4 :(得分:0)

您需要"Programming Collective Intelligence"。他们有一些关于推荐等的好章节。您需要了解Pearson差异和其他措施。

答案 5 :(得分:0)

查看Algorithms of the intelligent web,第3章“创建建议和建议”。对于您的问题:可选地,您可能需要一个包含不同项目的用户评级的表格。基于这些评级,您将能够测量两个客户端之间的相似性,然后根据客户即将实现的项目上的这些值进行估算。这些估计用于对项目进行排名。

另外,请查看Apriori algorithm第4章或其here的一般说明;这适用于一起购买的物品并提取一些关联规则。根据这些规则,您将检测您销售的哪些商品可能会添加到客户的购物篮中。对于您的问题:不应向您的数据库添加其他字段;你必须只保留一张桌子来分组购买的物品(市场购物篮内容)。

答案 6 :(得分:0)

select `A`.`ORDER_NO`, `A`.`SKU`, `B`.`SKU` `REL_SKU`
from `order_detail` `A`
inner join 
    (select DISTINCT `ORDER_NO`, `SKU` 
        from `order_detail`) `B`
    on `B`.`ORDER_NO` = `A`.`ORDER_NO`  
WHERE `B`.`SKU` = 'XXXXXXXX'
  AND `A`.`SKU` <> 'XXXXXXXX'

这对我有用。当然,可以在where子句中适当地添加任何过滤器,例如订单状态等。