Neo4j グラフ データベースには、約 50,000 のノードと 50,000 を超える関係が保持されます。ほとんどのノードを含むメイン グラフがあります。しかし、(まだ) メイン グラフに接続されていないグラフがいくつかあります。
さまざまなグラフを接続して 1 つの大きなメイン グラフを形成するために、Cypher クエリを使用して、接続されたノードのパスまたはコレクションをサイズ順に並べて一覧表示します (最大の切断されたグラフが最初)。
次のようなスタックオーバーフローに関するいくつかの投稿があります。
- グラフ内のすべての切断されたサブグラフを見つけますが、Cypher でそれを解決する方法は明らかではありません。
- Cypher を使用して neo4j で切断されたノードを見つけるにはどうすればよいですか?
問題を表す小さなサンプル グラフを次に示します。 Neo4j コンソールのサンプル グラフ
次の Cypher クエリは問題を解決しませんが、出発点です。メイン グラフに接続されていないすべてのノードが一覧表示されます。これらのノードをノードのコレクションに結合することができません。小さなグラフで動作します。大きなグラフでは、「未定義」のみが返されます... 10分以上実行した後。
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 - Java - SE ランタイム環境 (ビルド 1.7.0_17-b02)