Neo4j 返回不同的路径

Neo4j 返回不同的路径,neo4j,cypher,neo4j-apoc,Neo4j,Cypher,Neo4j Apoc,我想从图形中获得唯一的模式,但如果节点在相同路径中的顺序不同,neo4j会认为这些路径是不同的 这就是我想要找到的模式: (a:Store)-[:SELLS]->(:Product)-[:SIMILAR]-(:Product)<-[:SELLS]-(b:Store) | | [:BUNDLED] [:BUNDLED]

我想从图形中获得唯一的模式,但如果节点在相同路径中的顺序不同,neo4j会认为这些路径是不同的

这就是我想要找到的模式:

(a:Store)-[:SELLS]->(:Product)-[:SIMILAR]-(:Product)<-[:SELLS]-(b:Store)
                         |                     |
                    [:BUNDLED]            [:BUNDLED]
                         |                     |
(a:Store)-[:SELLS]->(:Product)-[:SIMILAR]-(:Product)<-[:SELLS]-(b:Store)

我如何才能有效地要求neo4j返回唯一的模式?

对于这些对称匹配以不同顺序返回值的问题,可以根据节点的id添加一些限制,这自然会排除找到的一些路径。这也是一种在两个节点之间获得已定义顺序的方法,因此您可以使用它来代替排序a和b

试试这个:

MATCH (a:Store)-[:SELLS]->(p1:Product)-[:BUNDLED]-(p2:Product)<-[:SELLS]-(a),
      (b:Store)-[:SELLS]->(p3:Product)-[:BUNDLED]-(p4:Product)<-[:SELLS]-(b),
      (p1)-[:SIMILAR]-(p3), (p2)-[:SIMILAR]-(p4)
      WHERE id(a) < id(b) AND id(p1) < id(p2) 
RETURN DISTINCT [a, b], p1, p2, p3, p4

您能否提供简化的示例输出,以演示非唯一路径?@InverseFalcon,就这样。
[[JojaMarket, PierreStore], apple, orange, banana, kiwi]
[[JojaMarket, PierreStore], orange, apple, kiwi, banana]
[[JojaMarket, PierreStore], banana, kiwi, apple, orange]
[[JojaMarket, PierreStore], kiwi, banana, orange, apple]
MATCH (a:Store)-[:SELLS]->(p1:Product)-[:BUNDLED]-(p2:Product)<-[:SELLS]-(a),
      (b:Store)-[:SELLS]->(p3:Product)-[:BUNDLED]-(p4:Product)<-[:SELLS]-(b),
      (p1)-[:SIMILAR]-(p3), (p2)-[:SIMILAR]-(p4)
      WHERE id(a) < id(b) AND id(p1) < id(p2) 
RETURN DISTINCT [a, b], p1, p2, p3, p4