Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Neo4j 计算2个节点之间的所有关系_Neo4j_Cypher_Query Optimization_Dijkstra_Neo4j Apoc - Fatal编程技术网

Neo4j 计算2个节点之间的所有关系

Neo4j 计算2个节点之间的所有关系,neo4j,cypher,query-optimization,dijkstra,neo4j-apoc,Neo4j,Cypher,Query Optimization,Dijkstra,Neo4j Apoc,我试图计算2个节点之间的所有关系: 对我来说,最短路径、所有最短路径和apoc.algo.dijkstra非常有效。但这些并不能获取两个节点之间的所有关系 这是我的查询,运行速度非常快: MATCH (s:Stop)--(st:Stoptime), (e:Stop)--(et:Stoptime) WHERE s.name IN [ 'Schlump', 'U Schlump'] AND e.name IN ['Hauptbahnhof Süd', 'HBF/Steintorwa

我试图计算2个节点之间的所有关系:

对我来说,最短路径所有最短路径apoc.algo.dijkstra非常有效。但这些并不能获取两个节点之间的所有关系

这是我的查询,运行速度非常快:

MATCH (s:Stop)--(st:Stoptime), (e:Stop)--(et:Stoptime)    
WHERE s.name IN [ 'Schlump', 'U Schlump'] 
    AND e.name IN ['Hauptbahnhof Süd', 'HBF/Steintorwall' , 'Hamburg Hbf']
        AND st.arrival_time < et.departure_time 

MATCH p = allshortestpaths((st)-[r:PRECEDES*]->(et))
RETURN p
我该怎么办?
如何找到特定节点之间的所有关系?

如果可以返回两个节点之间的所有路径,则取决于图形结构

如果有圆形结构或密集图,则两个节点之间将有大量路径。有关更多信息,请参见此问题:

我想公共交通系统的图表会非常密集。因此,由于图论(不是因为未优化的查询),返回两个站点之间的所有路径不起作用


您必须弄清楚为什么需要所有路径,以及您是否可以以不同的方式或使用某些约束条件(例如,maximim length)来表述该查询。此外,如果您确实需要所有路径,那么您的图形结构可能不适合回答您的问题。

如果可以返回两个节点之间的所有路径,则取决于图形结构

如果有圆形结构或密集图,则两个节点之间将有大量路径。有关更多信息,请参见此问题:

我想公共交通系统的图表会非常密集。因此,由于图论(不是因为未优化的查询),返回两个站点之间的所有路径不起作用

您必须弄清楚为什么需要所有路径,以及您是否可以以不同的方式或使用某些约束条件(例如,maximim length)来表述该查询。此外,如果您确实需要所有路径,那么您的图形结构可能不适合回答您的问题

MATCH (s:Stop)--(st:Stoptime), (e:Stop)--(et:Stoptime)    

MATCH p1 = (st)-[r1*..4]-(st2:Stoptime),
 p2 = (st2:Stoptime)-[r2*..4]-(st3:Stoptime),
 p3 = (st4:Stoptime)-[r3*..4]-(st5:Stoptime),
 p4 = (st5:Stoptime)-[r4*..4]-(et:Stoptime)
 WHERE s.name IN [ 'Schlump', 'U Schlump'] 
    AND e.name IN ['Hauptbahnhof Süd', 'HBF/Steintorwall' , 'Hamburg Hbf']
 AND all(x1 in nodes(p1) WHERE (x1:Stoptime)) 
 AND all(x2 in nodes(p2) WHERE (x2:Stoptime)) 
  AND all(x3 in nodes(p3) WHERE (x3:Stoptime)) 
   AND all(x4 in nodes(p4) WHERE (x4:Stoptime)) 
RETURN r1, r2, r3, r4