使用shortestPath()的两步查询是找到从一个节点到多个节点的最短路径的最有效解决方案吗?

时间:2013-06-12 16:21:46

标签: graph neo4j cypher

我还在学习Neo4j的绳索,并试图决定它是否是我需要解决的问题的正确工具。我的目标是计算从一个节点到特定节点组中每个节点的距离。到目前为止,我正在尝试这样的事情:

START n = node:node_auto_index(name="Animals") 
MATCH ppl:person 
WITH n, ppl 
MATCH p = shortestPath(n-[*]-ppl) 
RETURN length(p), ppl

(我是在'朋友的朋友'sample dataset上做的,首先用:person标记了所有人。)

问题是:这个查询是在一次遍历中完成的,还是Neo4j必须遍历ppl中的所有节点,与ppl中的节点数量线性增加计算成本?有没有更好的方法呢?

1 个答案:

答案 0 :(得分:0)

您要求的是使用标签:person计算从n到所有节点的最短路径。当然,这只会随着人员节点数量的增长而线性扩展,您也会获得越来越多的最短路径。