Neo4j具有给定属性的任何节点的ShortestPath

问题描述 投票:0回答:1

我正在尝试使用Neo4j中的ShortestPath。我想为每个节点找到它到达具有给定属性的任何节点的最短路径。

换句话说,对于任何节点n1,我想要到具有特定属性的任何节点n2,n2的最短路径的最小长度。我目前使用以下查询,但我认为它是低效的,因为它必须计算n1和n2之间的所有最短路径。一个更聪明的方法是在我们找到length(path)==1这样的路径后立即停止寻找。

MATCH path = shortestpath((n1:Node {has_ppt: False})-[:KNOWS]-(n2:Node {has_ppt: True}))
RETURN n1,n2,length(path)
LIMIT 5

有谁知道如何以不同的方式做到这一点?谢谢

neo4j cypher shortest-path
1个回答
0
投票
  1. 你的-[:KNOWS]-模式没有指定可变长度路径(如-[:KNOWS*..5]-),所以你的shortestpath查询目前只是试图找到长度为1的路径。这可能不是你想要的。
  2. 您可能希望尝试迭代方法来查找最短路径的单个实例。也就是说,重复执行以下查询(在增加[:KNOWS*1]模式中的数字时,增加所需的路径长度),直到得到结果: MATCH path = (n1:Node {has_ppt: False})-[:KNOWS*1]-(n2:Node {has_ppt: True}) RETURN n1,n2,length(path) LIMIT 1;
© www.soinside.com 2019 - 2024. All rights reserved.