Neo4j 根据销售相关性确定可能购买产品的客户群

Neo4j 根据销售相关性确定可能购买产品的客户群,neo4j,Neo4j,Neo4j是这里的新手,但在查询方面越来越雄心勃勃。我试图检索不拥有产品N但拥有产品N2中发现的产品的客户C2集合,该产品也属于拥有产品N的客户C集合。我非常接近于对该查询进行排序,并认为这就是它(考虑到SKU123456标识的产品): 我这样做是否明智?奇怪的是,当结果集受到限制时(示例中的限制为10),它会立即返回,但当取消限制时,我会在web控制台中收到可怕的“未知错误”错误(查看日志不会发现任何结果) 感谢您的真知灼见 编辑 Michael Hunger当然帮了忙,所以我会接受他的答案,

Neo4j是这里的新手,但在查询方面越来越雄心勃勃。我试图检索不拥有产品N但拥有产品N2中发现的产品的客户C2集合,该产品也属于拥有产品N的客户C集合。我非常接近于对该查询进行排序,并认为这就是它(考虑到SKU
123456
标识的产品):

我这样做是否明智?奇怪的是,当结果集受到限制时(示例中的限制为10),它会立即返回,但当取消限制时,我会在web控制台中收到可怕的“未知错误”错误(查看日志不会发现任何结果)

感谢您的真知灼见

编辑

Michael Hunger当然帮了忙,所以我会接受他的答案,但是问题不是因为打字错误;我在进行语法替换以匹配问题描述中的符号时介绍了这一点,因为我担心我的解释有点复杂。然而,这个解决方案可能会绊倒其他人,所以我将在这里解释。我使用的是Neo4j web浏览器来原型化Cypher查询,它运行得相当好,但是出于某种原因,它不允许包含1000条以上记录的响应。这就是为什么当我限制查询时,它会立即返回响应。当我随后将查询限制在1000多行时,我被告知响应太大(超过1000行)。当我完全取消限制时,我收到了“未知错误”错误,我认为这只是浏览器管理员的方式,表明它不能返回超过1000行的响应(无可否认是一种令人困惑的方式);我不确定,为什么在没有限制的情况下,报告会有所不同


我是通过在Neo4JShell中运行查询得出这个结论的,在那里它愉快地立即返回了1000多行。希望这对某人有所帮助。

您的查询中有一个输入错误:
book
我会选择更好的名字,而不是
N2
。如果您使用2.0,请开始使用标签

Start
N=node:node_auto_index(sku="123456")
match
  (C)-[:owns]->(N),
  (C)-[:owns]->(N2),
  (N2)-[:owns]->(C2)
  WHERE NOT((C2)-[:owns]->(N))
return C2.name
limit 10
对于Neo4j 2.0

match (product:Product {sku:"123456"})<-[:OWNS]-(peer:Customer)
      -[:OWNS]->(other:Product)<-[:OWNS]-(target:Customer)
WHERE NOT( (target)-[:owns]->(product))
return target.name
limit 10
匹配(产品:产品{sku:“123456”})(其他:产品)(产品))
返回target.name
限制10
也许您可以创建一个数据模型的示例和一些示例查询以供进一步讨论

match (product:Product {sku:"123456"})<-[:OWNS]-(peer:Customer)
      -[:OWNS]->(other:Product)<-[:OWNS]-(target:Customer)
WHERE NOT( (target)-[:owns]->(product))
return target.name
limit 10