2

私は現在、Neo4j で何ができるかを試しています。私のデータベースは、 TSV ファイルからhttps://github.com/jexp/batch-importを使用してインポートされた、約 54000 のノードと 10M の関係 (2 つの関係タイプ) で構成されています。私が見つけたのは、妥当な時間内にクエリ結果を取得するためにインデックスが必要だということです。

私が作成したい典型的なクエリの 1 つは、特定のタイプに接続されているノードを一覧表示することです。接続しているノードには特定の値があります。何かのようなもの:

START 
    a=node(*) 
MATCH 
    (a)-[r]->(b) 
WHERE 
    id(a) <> 0 
    AND id(b) <> 0 
    AND type(r) = 'ASSOCIATION' 
    AND a.attr1 = 'value' 
    AND b.attr1 = 'value' 
RETURN 
    a, b LIMIT 200. 

当然、このクエリは決して完了しません。

  1. それを念頭に置いて、既存のデータベースでこの種のクエリの関係インデックスを (バッチ作成?) する最も簡単な方法は何ですか? また、特定の属性値を持つノードのインデックスは?

  2. これは Web コンソールから実行できるものですか、それとも後で実行できますか? neo4j のマニュアルを読んで、ノードごとにデータをロードし、データベースの作成中にインデックスを作成するカスタム Java 実装を作成する必要があることがわかりました。個人的には python を使いたいのですが、python バインディングが遅すぎて、現在のデータベースをインポートすることさえできませんでした。

4

1 に答える 1

1

特定のスタートをお探しですか?

そうでない場合は、関係のインデックスを作成してから、最初にそれらを引き出してから、そこから移動できます。

START 
    specificRelationship=relationship:RelIndex(key='value')
MATCH
    a-[specificRelationship]->b
WHERE
    AND a.attr1 = 'value' 
    AND b.attr1 = 'value' 
RETURN 
    a, b LIMIT 200

質問に答えるには:

  1. リレーションシップまたはノードのいずれかで、任意のタイプのインデックスを作成できます。どちらを検索するかを選択できます。私は通常、個別に定義されたプロパティに基づいてキーと値のペアを介して取得できるノードで、人々の特異性を最初に見ます。

  2. Python でこれを行ったことはありませんが、Java で簡単にロードできます。このクエリを実行したい場合は、Neo4j の Web コンソールを介して実行できます。情報。

于 2012-06-25T04:12:50.567 に答える