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之间的所有路由_Neo4j_Cypher - Fatal编程技术网

获取两个节点neo4j之间的所有路由

获取两个节点neo4j之间的所有路由,neo4j,cypher,Neo4j,Cypher,我正在做一个项目,我必须处理图表。。。 我用一张图表来计算两站之间的公交和自行车路线 事实上,我所有的关系都包含了从关系的开始到结束所需要的时间 为了获得到节点之间的最短路径,我使用cypher的最短路径函数。但是,最短的路径不是最快的 有没有一种方法可以获取两个节点之间未通过关系链接的所有路径 谢谢 编辑: 事实上,我改变了我的图表,使它更容易。 所以我仍然拥有我所有的节点。现在,关系类型对应于从一个节点到另一个节点所需的时间 cypher的最短路径函数给出了包含较少关系的路径。我希望它返回所

我正在做一个项目,我必须处理图表。。。 我用一张图表来计算两站之间的公交和自行车路线

事实上,我所有的关系都包含了从关系的开始到结束所需要的时间

为了获得到节点之间的最短路径,我使用cypher的最短路径函数。但是,最短的路径不是最快的

有没有一种方法可以获取两个节点之间未通过关系链接的所有路径

谢谢

编辑:

事实上,我改变了我的图表,使它更容易。 所以我仍然拥有我所有的节点。现在,关系类型对应于从一个节点到另一个节点所需的时间

cypher的最短路径函数给出了包含较少关系的路径。我希望它返回所有类型(时间)相加最小的路径。。 可能吗


谢谢

您可以使用Dijkstra/Astar算法,它似乎非常适合您。看看


不幸的是,您无法使用Cypher中的路径。

在Cypher中,要获取两个节点之间未通过关系链接的所有路径,并按权重中的总数进行排序,您可以使用1.9中引入的reduce函数:

start a=node(...), b=node(...) // get your start nodes
match p=a-[r*2..5]->b // match paths (best to provide maximum lengths to prevent queries from running away)
where not(a-->b) // where a is not directly connected to b
with p, relationships(p) as rcoll // just for readability, alias rcoll
return p, reduce(totalTime=0, x in rcoll: totalTime + x.time) as totalTime
order by totalTime

如果你只需要最短的,你可以在末尾加上一个限制1。

是的,我考虑过这样做。。我只是想知道是否有一种方法可以通过cypher获得两个节点之间的所有路径,因为在获得所有可能的路径后,我可以解析它们并获得最快的路径。。使用cypher来获取这些路径对我来说会更容易,因为我在nodejs中使用了neo4j。尽管首先获取两个节点之间的所有路径,然后进行过滤可能会慢得多,因为算法不能很聪明,不能立即选择最佳路径,即采取“快捷方式”我们可能应该以某种方式向cypher公开更多的算法。你需要使用cypher吗?我可以想出一些小精灵脚本来打印出来,看起来应该很整洁。事实上,我正在使用nodeJs。。我有一个库来查询我的neo4j图,它允许我做一些密码查询。。。而不是gremlin查询…获取两个节点之间未通过关系链接的所有路径是什么意思?如果节点之间没有关系链接,如何在节点之间形成路径?我是说,没有直接链接。(还要注意的是,这是非常古老的…语法现在甚至不会运行)。请参阅3.0中的Apoc,了解一些更好的方法。