neo4j - 如何在 Neo4j 中进行简单的推荐

标签 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)

我希望得到巧克力,其中每个计数均为1,但我什么也没得到。我错过了什么?

最佳答案

您在初始 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

英文:“匹配包含特定产品的订单。对于这些订单,获取所有包含的非初始产品的产品。对于这些产品,匹配包含它们的订单。返回产品名称和计算它包含在多少个订单中。”

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

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

关于neo4j - 如何在 Neo4j 中进行简单的推荐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26624995/

相关文章:

neo4j - 分离删除 Neo4j 2.3.x/Cypher

database - 如何重置/清除/删除 neo4j 数据库?

spring-data-neo4j v6 : No converter found capable of converting from type [MyDTO] to type [org. neo4j.driver.Value]

java - neo4j Rest api发送多个查询和参数

neo4j - 使用 neo4j 和 py2neo 中的索引

java - Java应用程序中的Neo4j查询:No result is displaying[Still fail to solve it]

c# - 将密码查询转换为 C#

database - 使用 Neo4j 在一台服务器上创建多个数据库

java - 添加非原始类型数据作为节点和关系中的属性值

javascript - 从 neo4j rest API 创建 json 的正确方法