Найти группы связанных узлов в Cypher - PullRequest
1 голос
/ 07 марта 2019

У меня есть узлы с меткой A. Некоторые из них связаны с отношением TEST (см. Рисунок A).

Я хочу MATCH групп связанных узлов, создать новый узел B для каждой группы и создать отношение от каждого члена группы к новому узлу B (см. Рисунок B). Я знаю, что группы маленькие, никогда не более 3-х шагов TEST отношений.

Как мне MATCH узлы A и вернуть связанные группы? В APOC реализован алгоритм графов?


enter image description here

1 Ответ

1 голос
/ 07 марта 2019

Я нашел ответ, может быть, он еще кому-нибудь пригодится:

В пакете алгоритмов графа есть несколько алгоритмов для обнаружения сообщества () https://neo4j.com/docs/graph-algorithms/current/. В этом случае мы ищем подключенные компоненты : https://neo4j.com/docs/graph-algorithms/current/algorithms/connected-components/

Алгоритм может найти подключенные компоненты и сохранить идентификатор компонента на узлах:

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...