AQL和图遍历:产品推荐示例

问题描述

我一直在使用AQL学习arangodb和图遍历,并且看了一些可以在网上找到的示例,例如飞行路线,演员和电影,但我很难将头绪写在最初想像的东西上是一个简单的产品推荐实验,其中,根据其他顾客(进行过类似购买)的购买,向顾客推荐他/她没有购买的商品。

到目前为止,这是我设法实现的目标,检索了与当前客户购买了相同产品的其他客户的产品

FOR products IN 1..1 OUTBOUND 'customers/118685' bought
    FILTER products._id LIKE "products/%" 
    FOR other_buyers IN 1..1 INBOUND products bought
    FILTER other_buyers._id != 'customers/118685' 
    FOR other_buyers_products IN 1..1 OUTBOUND other_buyers bought
    return other_buyers_products

此外,我还没有达到可以向与当前客户进行更多类似购买(即基于更高数量)的客户推荐建议的阶段。赞赏的建议或有用的例子。

解决方法

这是一个非常开放的问题。一个更精确的问题将导致更多更好的答案...但是我会尝试一下。

您可以使用更简洁的方式来表达当前查询:

FOR product IN 3..3 ANY 'customers/1' purchases
RETURN DISTINCT product

使用COLLECT可以轻松添加产品的出现次数:

FOR product IN 3..3 ANY 'customers/1' purchases
COLLECT pid = product._id WITH COUNT INTO count
RETURN { pid,count }

这仍然是一种非常幼稚的方法。您最终会得到诸如“您曾经买过香蕉,应该用厕纸”之类的建议,因为每个人最终都买了这些东西。您不仅可以保存客户购买了什么产品,还可以保存购买时间,从而改善结果。然后,您将能够找出经常一起购买哪些产品,例如一个手电筒和一个电池。

在互联网上四处寻找灵感,例如here