【问题标题】:Find groups of connected nodes in Cypher在 Cypher 中查找连接节点组
【发布时间】:2019-03-07 19:31:03
【问题描述】:

我有标签为A 的节点。其中一些与TEST的关系有关(见图A)。

我想MATCH连接的节点组,为每个组创建一个新节点B,并创建从组的每个成员到新节点B的关系(见图B)。我知道这些小组很小,TEST 关系的步骤永远不会超过 3 步。

我如何MATCH A 节点并返回连接的组? APOC中是否实现了图算法?


【问题讨论】:

    标签: neo4j cypher


    【解决方案1】:

    我找到了答案,也许它对某人仍然有帮助:

    图算法包()https://neo4j.com/docs/graph-algorithms/current/中有几种社区检测算法。在这种情况下,我们寻找连接的组件https://neo4j.com/docs/graph-algorithms/current/algorithms/connected-components/

    该算法可以找到连接的组件并将组件的ID存储在节点上:

    CALL algo.unionFind('A', 'TEST', {write:true, partitionProperty:"partition"})
    YIELD nodes, setCount, loadMillis, computeMillis, writeMillis;
    

    有了这个新属性,MATCH 属于特定组的所有节点很简单:

    MATCH (a:A)
    WITH a.partition AS p, a
    RETURN p, count(a)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-07-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-17
      • 1970-01-01
      相关资源
      最近更新 更多