2016-05-23 10 views
1

私はneo4jとbulkimportに関連する質問があります。 私はサイファークエリを書いたが、それはうまくいかず、クラッシュするまで多くの時間がかかります。 私はpy2neo経由でこの文を挿入します。その他のステートメントは正常に動作します。 "neo4j - エンドレスクエリ

MATCH (own:Typea {hash:"a"}) 
MATCH (prev:Typea {hash:"b"}) - [c:CRED] -> (o:Typeb{index:0}) 
CREATE (o) - [s:SPAN] -> (own) 

" このJavaエラーと私のデータベースのクラッシュ: "GCオーバーヘッドの制限を超えて"。 ノードをマニュアルで検索すると、MATCH Sugestionsが表示されますか?以下では

よろしく フランク

+0

クエリのプロファイル出力を共有できますか? –

+0

Typea {hash: "a"}はいくつありますか?Typea {hash: "b"}はいくつありますか?それらの間にクロスプロダクトを作成します。 –

+0

どちらのneo4j-versionをお使いですか? –

答えて

1

、私はあなたの質問でtypeaが実際にTypeaであることを前提としています。時間と(また、GCエラーを解決する可能性があります)MATCH条項が必要とするリソースの量を最小限に抑えるため

、必ずcreated indexesを持っています

CREATE INDEX ON :Typea(hash); 
CREATE INDEX ON :Typeb(index); 

[UPDATED]

も非常に多くの関係を作成しようとしている可能性があります。このクエリは、作成しようとするだろうか、多くの関係を示します:

MATCH (own:Typea {hash:"a"}), (:Typea {hash:"b"})-[:CRED]->(o:Typeb{index:0}) 
RETURN COUNT(*); 

結果は、非常に多数の場合は、繰り返しになるまで(時間にちょうど1000年CRED関係が作成されます)次のクエリを呼び出すことができます問合せは、1000未満の値を返します:

MATCH (own:Typea {hash:"a"}), (:Typea {hash:"b"})-[:CRED]->(o:Typeb{index:0}) 
WHERE NOT (o)-[:SPAN]->(own) 
WITH o, own 
LIMIT 1000 
CREATE (o)-[:SPAN]->(own) 
RETURN COUNT(*); 

あなたが適切に1000制限を調整することができます。

+0

はいあなたの仮定は正しいです。私はそれらの属性にインデックスを持っています。 私がマヌエルに尋ねるとき、応答時間は速いです。 問題は作成された関係にある必要があります。 – Frank

+0

私はより多くの提案で私の答えを更新しました。 – cybersam

+0

ありがとう、私はあなたのクエリを確認しました。カウントは1で、定義ごとにできるのはoのみです。 Attributハッシュはuniqeです。各TypeAは、そのインデックスで一意のn個のTypeB関係を取得しました。 私はpy2neo経由でインデックスを作成しました: "self.graph.schema.create_uniqueness_constraint( 'TypeA'、 'hash')" – Frank