tutorial edition community neo4j cypher

edition - Consulta de Cypher para listar todos los gráficos desconectados Neo4j graph DB?



neo4j install (1)

esta no es una respuesta completa, pero creo que debería (si puede) retroceder en el Marco transversal para este caso de uso.

Cypher se trata de hacer coincidir partes específicas de un gráfico, sin importar cómo quieras hacerlo. El marco de Traversal se trata realmente de CÓMO quieres atravesar un gráfico.

En su caso, el recorrido es más importante que el gráfico para que coincida. Esto es lo que sugeriría, use el Marco transversal para

  1. etiquetar grupos de nodos en la forma que desee
  2. agrega los resultados en un mapa (o algo más evolucionado) mientras estás en ello

La base de datos de gráficos Neo4j contiene aproximadamente 50,000 nodos y más de 50,000 relaciones. Hay un gráfico principal que contiene la mayoría de los nodos. Pero hay varios gráficos que aún no están conectados al gráfico principal.

Para conectar los diversos gráficos y formar un gran gráfico principal, pretendo utilizar una consulta Cypher para enumerar las rutas o colecciones de nodos conectados ordenados por su tamaño (el gráfico desconectado más grande primero).

Hay varias publicaciones en stackoverflow como:

Aquí hay un pequeño ejemplo de gráfico que representa el problema: gráfico de ejemplo de la consola Neo4j

La siguiente consulta Cypher no resuelve el problema pero es un punto de partida. Enumera todos los nodos que no están conncetados al gráfico principal. Se pierde la combinación de esos nodos en colecciones de nodos. Funciona en un pequeño gráfico. En un gráfico grande, solo devuelve "indefinido" ... después de ejecutar más de 10 minutos.

START s=node(3), n=node(*) MATCH s-[*1..10]-m WITH collect(m) as members, n WHERE NOT n in members RETURN DISTINCT id(n), n.name? ORDER BY id(n) LIMIT 10;

¿Cómo usar Cypher para enumerar todos los (sub) gráficos desconectados?

Entorno: - Neo4j - Graph Database Kernel 1.9.M05 - Java - SE Runtime Environment (compilación 1.7.0_17-b02)