在neo4j

时间:2017-07-29 07:00:18

标签: neo4j cypher

neo4j nodes and relationships

这是一项相当艰苦的工作。我试图从特定节点开始寻找具有双向关系的所有节点。基于上图,我想找到从节点1开始的所有双向关系。只有具有双向关系的节点才匹配。例如,节点1,3,4匹配,节点1,2,3匹配为两个单独的组。但是,如果节点2和4具有双向关系,则节点1,2,3,4匹配为一个组。主要思想是所有节点在这样的组中都是双向链接的。我的想法是找到从1开始的双向关系的所有节点并继续处理,但我无法继续。非常感谢任何人帮我解决这个问题。顺便说一句,只有最大的双向圈'需要。

1 个答案:

答案 0 :(得分:0)

您的问题看起来很像在图中找到强关联组件。如文档中所定义。

  

如果在所有之间存在路径,则有向图强烈连接   顶点对(节点)。此算法按指示处理图形,因此   这种关系的方向很重要,而且关系密切   只有在两者中的节点之间存在关系时才存在组件   方向。

documentation中查看更多内容。您需要neo4j-graph-algorithms

将图形组件写回节点的示例查询。

CALL algo.scc('Label','C', {write:true,partitionProperty:'partition'})
YIELD loadMillis, computeMillis, writeMillis, setCount, maxSetSize, minSetSize  

然后您可以通过以下查询找到最大的组件。

MATCH (u:Label)
RETURN distinct(u.partition) as partition,count(*) as size_of_partition 
ORDER by size_of_partition DESC LIMIT 1