如何在Neo4j中做出简单的推荐

时间:2014-10-29 07:40:23

标签: neo4j

我正在neo4j中进行一个简单的演示,我想根据订单使用推荐,以及如何购买。我在这里创建了一个图表:http://console.neo4j.org/?id=jvqr95

基本上我有很多关系,如:

(o:Order)-[:INCLUDES]->(p:Product)

订单可以有多个产品。

鉴于具体的产品ID,我希望找到包含具有给定产品ID的产品的订单中的其他产品,我想根据产品订单的数量来订购。

我尝试过以下方法:

MATCH (p:Product)--(o)-[:INCLUDES]->(p2:Product)--(o2)
WHERE p.name = "chocolate"
RETURN p2, COUNT(DISTINCT o2)

但是这并没有给我我想要的结果。对于该查询,我希望以{2}获得chips,但我只得到1的计数。

以下查询:

MATCH (p:Product)--(o)-[:INCLUDES]->(p2:Product)--(o2)
WHERE p.name = "chips"
RETURN p2, COUNT(DISTINCT o2)

我希望将chocolateball放回每个计数为1的位置,但我不会得到任何回报。我错过了什么?

1 个答案:

答案 0 :(得分:4)

您在初始MATCH中匹配太多内容。

MATCH (o:Order)-[:INCLUDES]->(p:Product { name:'ball' })
MATCH (o)-[:INCLUDES]->(p2:Product)
WHERE p2 <> p
MATCH (o2:Order)-[:INCLUDES]->(p2)
RETURN p2.name AS Product, COUNT(o2) AS Count
ORDER BY Count DESC

英文:&#34;匹配包含特定产品的订单。对于这些订单,请获取所有非初始产品的产品。对于这些产品,请匹配它们所包含的订单。返回产品名称以及包含在其中的订单数量。&#34;

http://console.neo4j.org/?id=q49sx6

http://console.neo4j.org/?id=uy3t9e