我有一棵大约有300个节点的树。对于任意节点,我需要从该节点到根节点绘制一个子树(包括所有可能的路径)。
例如,如果我有这棵树(已编辑):
a
|
-----
| | |
b c d
| |
---
|
e
|
f
并且选择了e
节点,我需要绘制:
a
|
---
| |
b c
| |
---
|
e
我正在使用此Cypher查询:
start n=node({nodeId}) optional match n-[r:DEPENDS*]->p return n,r,p
虽然它有效,但根据搜索节点的深度,它非常慢(超过10秒)。
¿我怎样才能有效地实现这一目标?
答案 0 :(得分:0)
您的查询将计算所有路径,而您只对根路径感兴趣。所以在beween中获取根和节点以及最短路径。
MATCH path=shortestPath((root)<-[:DEPENDS*]-(n))
WHERE id(root) = {rootId} and id(n) = {nodeId}
RETURN path