繁体   English   中英

使用neo4j中的cypher查找从一个特定节点开始具有双向关系的所有节点

[英]Find all nodes with two-way relationships starting from one specific node using cypher in neo4j

neo4j节点和关系

这是一项艰巨的工作。 我正在尝试查找从特定节点开始具有双向关系的所有节点。 基于上图,我想找到从节点1开始的所有双向关系。只有具有双向关系的节点才匹配。 例如,节点1,3,4匹配,节点1,2,3匹配为两个单独的组。 但是,如果节点2和4具有双向关系,则节点1,2,3,4将作为一组进行匹配。 主要思想是在这样的组中所有节点都以双向方式链接。 我的想法是找到具有从1开始的双向关系的所有节点并继续进行处理,但是我无法继续。 谁能帮助我解决这个问题,非常感谢。 顺便说一句,只需要最大的“双向圆”。

您的问题看起来很像在图中找到紧密连接的组件。 如文档中所定义。

如果在所有成对的顶点(节点)之间存在路径,则有向图是牢固连接的。 该算法将图形视为有向图,因此关系的方向很重要,并且仅当两个方向上的节点之间都存在关系时,牢固连接的组件才存在。

文档中查看更多信息 您将需要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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM