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 - Fatal编程技术网

如何在neo4j图中识别跳转关系

如何在neo4j图中识别跳转关系,neo4j,cypher,Neo4j,Cypher,考虑这样一个图: A --> B --> C A --> C 我想确定“跳跃”关系(在本例中是A到C),以便只保留最长的路径 这就是我目前所做的: MATCH (s)-[r]->(d) MATCH p=(s)-[*0..]->(d) WHERE NOT r in relationships(p) SET r.ignore = true 我想知道这是否是一条路,是否是最有效的 现在,假设我们删除了B-->C关系,那么不应忽略A-->C 有什么方法可以识别它并

考虑这样一个图:

A --> B --> C
A --> C
我想确定“跳跃”关系(在本例中是A到C),以便只保留最长的路径

这就是我目前所做的:

MATCH (s)-[r]->(d) 
MATCH p=(s)-[*0..]->(d) 
WHERE NOT r in relationships(p) 
SET r.ignore = true
我想知道这是否是一条路,是否是最有效的

现在,假设我们删除了B-->C关系,那么不应忽略A-->C

有什么方法可以识别它并进行恢复

非常感谢


Rémi

s
d
一对特定的节点,还是要对每一对可能的节点执行此操作?如果是后者,那么您想要做的通常是不可能的,因为相同的关系可能属于一对节点之间的最长路径,也可能属于另一对节点之间的非最长路径。你能举个例子说明你说的话吗?因为我不能用同样的方式来理解。至少在我的图形结构中,我认为这是不可能的。感谢您的支持,除了顶部图形之外,还有一个
B-->D-->C
路径。然后应忽略
B-->C
(因为它是从
B
C
的较短路径)。但是,对于从
A
C
的路径,也不应忽略它。你不能两全其美。好吧,我明白了。在这种情况下,我希望B-> C也被忽略,因为我想在这里只考虑最长的路径A->B-> -D>C。所以对于我来说,忽略B-> C是正确的。考虑到只有最长的路径,从B-> C,它现在是B-> d -> C.,那么我的问题仍然是相同的,我的解决方案是否可行,我是否可以恢复?(在我们稍后删除B-->D的情况下)?当存在循环时会发生什么?此外,我认为您的查询不起作用,因为可变长度关系模式可以匹配部分路径(即,当
D
不是叶节点时)。