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