【发布时间】:2019-03-07 19:31:03
【问题描述】:
我有标签为A 的节点。其中一些与TEST的关系有关(见图A)。
我想MATCH连接的节点组,为每个组创建一个新节点B,并创建从组的每个成员到新节点B的关系(见图B)。我知道这些小组很小,TEST 关系的步骤永远不会超过 3 步。
我如何MATCH A 节点并返回连接的组? APOC中是否实现了图算法?
【问题讨论】:
我有标签为A 的节点。其中一些与TEST的关系有关(见图A)。
我想MATCH连接的节点组,为每个组创建一个新节点B,并创建从组的每个成员到新节点B的关系(见图B)。我知道这些小组很小,TEST 关系的步骤永远不会超过 3 步。
我如何MATCH A 节点并返回连接的组? APOC中是否实现了图算法?
【问题讨论】:
我找到了答案,也许它对某人仍然有帮助:
图算法包()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)
【讨论】: