2013-04-28 3 views
4

Neo4j 그래프 데이터베이스는 대략 50,000 개의 노드와 50,000 개 이상의 관계를 유지합니다. 대부분의 노드를 포함하는 주 그래프가 있습니다. 그러나 (아직) 주 그래프에 연결되지 않은 몇 가지 그래프가 있습니다.연결되지 않은 모든 그래프를 나열하는 Cypher 쿼리 Neo4j 그래프 DB?

하나의 큰 주 그래프를 형성하기 위해 다양한 그래프를 연결하기 위해 Cypher 쿼리를 사용하여 연결된 노드의 경로 또는 컬렉션을 크기 (가장 큰 연결이 끊어진 그래프) 순서로 나열하려고합니다.

같은 유래에 대한 몇 가지 게시물이 :

  • How do I find disconnected nodes on neo4j with Cypher?
  • 찾는 문제를 나타내는 작은 예 그래프이다 Neo4j Console example graph

    다음 사이퍼 질의 문제를 해결하지는 않지만 시작점이다. 주 그래프에 연결되지 않은 모든 노드를 나열합니다. 이 노드를 노드 모음으로 결합하는 것을 놓친다. 그것은 작은 그래프에서 작동합니다. 큰 그래프에서는 10 분 이상 실행 한 후에 "undefined"를 반환합니다.

    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; 
    

    Cypher를 사용하여 모든 연결되지 않은 (하위) 그래프를 나열하는 방법은 무엇입니까?

    환경 : - Neo4j - 그래프 데이터베이스 커널 1.9.M05 - 자바 - SE 런타임 환경 (빌드 1.7.0_17-B02)

    답변

    3

    이것은 완전한 답변은 아니지만 내가 (당신이해야한다고 생각 할 수 있다면)이 유스 케이스의 경우 Traversal Framework으로 되돌아갑니다.

    Cypher는 사용자가 원하는대로 그래프의 특정 부분과 일치합니다. Traversal 프레임 워크는 실제로 그래프를 탐색하는 방법에 대한 것입니다.

    경우에 따라 일치시킬 그래프보다 트래버스가 더 중요합니다. 당신이 그것을에있는 동안 난 여기, 제안지도에 당신이

  • 원하는 방식으로

    에 노드의
    1. 라벨 그룹을 순회 Framework를 사용하는 결과를 집계 (또는 뭔가 더 진화) 줄 것입니다
  • +0

    Rolf, Traversal Framework는 Java 또는 Groovy (또는 Jython 일 수도 있음)를 사용함을 의미합니다. Python/Py2Neo와 함께 REST API를 사용하고 싶습니다. – Roman

    +0

    트래버스는 REST API afaik (http://docs.neo4j.org/chunked/1.8.2/rest-api-traverse.html)에서도 제공됩니다. – Rolf

    +0

    와우. 나는 그 사실을 몰랐다. 그것을 시도 할 것이다. – Roman