Визуализация сильно связанных компонентов в результате использования Cypher
Я использовал neo4j-mazerunner для анализа отношения strong_connected_components на моем графике. Процесс завершился, и теперь я получил свойство strong_connected_components на своих узлах.
Я использовал следующий запрос, чтобы получить строки узлов различных узлов:
MATCH (n) WHERE has(n.strongly_connected_components)
RETURN DISTINCT "node" as element, n.strongly_connected_components
AS strongly_connected_components
LIMIT 25 UNION ALL MATCH ()-[r]-()
WHERE has(r.strongly_connected_components)
RETURN DISTINCT "relationship" AS element, r.strongly_connected_components
AS strongly_connected_components LIMIT 25
Я не уверен, как зашифровать запрос графа для визуализации сгенерированных кластеров.
Любая помощь будет оценена.
3 ответа
Этот запрос должен возвращать 25 кластеров, и вы должны иметь возможность визуализировать каждый кластер в браузере как сильно связанные узлы. Запрос предполагает, что FOO
были отношения, указанные для neo4j-mazerunner
когда его просят сгенерировать strongly_connected_components
ценности.
ПРИМЕЧАНИЕ. Отключите функцию автозаполнения браузера (в правом нижнем углу панели результатов), чтобы увидеть только FOO
отношения между узлами в каждом кластере:
MATCH p=(n1)-[:FOO]->()
RETURN n1.strongly_connected_components AS clusterId, COLLECT(p) AS paths
LIMIT 25;
поскольку neo4j-mazerunner
назначает то же самое strongly_connected_components
значение для всех узлов в одном кластере, этот запрос просто объединяет все пути с одинаковыми strongly_connected_components
значение (определяется как clusterId
).
Вы можете запросить конкретный идентификатор, используя:
match (n2 {strongly_connected_components:NODE_ID_HERE})-[r:NEXT]->(n) return n,n2 LIMIT 50
Я, вероятно, неправильно понимаю проблему здесь, но это даст вам более полную картину ваших сильно связанных узлов:
MATCH (n) WHERE has(n.strongly_connected_components) MATCH (n)-[*]-() RETURN n