Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Neo4J获取通过特定节点的节点之间的最短路径_Neo4j_Cypher_Shortest Path - Fatal编程技术网

Neo4J获取通过特定节点的节点之间的最短路径

Neo4J获取通过特定节点的节点之间的最短路径,neo4j,cypher,shortest-path,Neo4j,Cypher,Shortest Path,我们有一个Neo4J数据库,用于跟踪为公司工作的人员。总体结构如下:- (Person)-[:WORKS_AT]->(Company) 一个人可以同时做多份工作,每个公司可以有多个人 给定2个公司(公司1和公司2),我们可以使用- match (start:Company {id:1}),(end:Company {id:2}), p = shortestPath((start)-[:WORKS_AT*]-(end)) return * 我们要做的是计算两个公司之间的最短路径,该路径包

我们有一个Neo4J数据库,用于跟踪为公司工作的人员。总体结构如下:-

(Person)-[:WORKS_AT]->(Company)
一个人可以同时做多份工作,每个公司可以有多个人

给定2个公司(公司1和公司2),我们可以使用-

match (start:Company {id:1}),(end:Company {id:2}), p = shortestPath((start)-[:WORKS_AT*]-(end)) return *
我们要做的是计算两个公司之间的最短路径,该路径包括特定人员,例如-

(Company 1)-(Person 1)-(Company 4)-(Person 2)-(Company 2)
如果我们想通过Person 2连接,将返回而不是以下内容-

(Company 1)-(Person 3)-(Company 2)
我已尝试在中实现该建议,但它返回了一个错误-

最短路径算法在开始和结束节点 都是一样的。如果执行最短路径搜索,可能会发生这种情况 在笛卡尔积之后,可能具有相同的开始和结束节点 对于传递给最短路径的某些行。如果你不愿意的话 体验这个例外,并能接受失踪的可能性 结果对于这些行,在Neo4j配置中通过 将
cypher.禁止最短路径\u公共\u节点设置为false。如果你
无法接受缺少的结果,并且确实需要最短的路径
在两个公共节点之间,然后使用标准
密码可变长度模式表达式,后跟路径排序
长度和限制为一个结果

编辑:链接了错误的文章-应该是

我们尝试运行的失败查询是-

match(s:Company{ID:1})
match(f:Company{ID:2})
match (n:Person) where n.id in [2]
with collect(n) as wps 
match path=allshortestPaths((s)-[:WORKS_AT*]->(f))
where ANY ( n in wps WHERE n in nodes(path) ) return *

能否显示失败的查询?