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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Neo4j具有给定属性的任何节点的ShortestPath相关的知识,希望对你有一定的参考价值。

我正在尝试使用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

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

答案
  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;

以上是关于Neo4j具有给定属性的任何节点的ShortestPath的主要内容,如果未能解决你的问题,请参考以下文章

Neo4j怎么判断节点的属性的类型

neo4j - 标签 vs 属性 vs 关系 + 节点

在 Neo4j 中将对象存储为属性

Cypher - 通过其连接节点的属性匹配节点?

Neo4j CQL |create &merge

Neo4j CQL |create &merge