2015-02-10 204 views
0

我有兩個導入neo4j的csv文件,命名爲:uniq_namesall_names。我有uniq_names文件中的一列和大約5000行,我有三列:name,id1id2它在all_names文件中大約有300000行。 現在我試圖用下面的代碼創建的關係:Neo4j創建關係

MATCH (a:uniq_names),(b:all_names) 
    WHERE a.name=b.name AND b.id1<>b.id2 
    CREATE (a)-[:child]->(b); 

我執行它認爲,約20分鐘,但返回代碼:「0行返回」的結果,它down't創建任何關係。當我在all_names文件中有1000行並且在uniq_names文件中有50行時它工作得很好 我有Windows 7 64bit,jdk 1.7.0_71,neo4j 2.1.6 enterprise。有任何想法嗎?

+2

我格式化你爲你的代碼,請確保您使用此頁面引用自己動手做進一步的問題! http://stackoverflow.com/help/formatting – HavelTheGreat 2015-02-10 14:22:34

回答

1

該查詢基本上創建了您的5k uniq_names和300k all_names的叉積,因此15億次操作 - 效率不高。

爲了優化:

創建索引:​​。於是先去了所有uniq_names,發現通過索引查找相應all_names,檢查ID條件和創建的關係:

MATCH (a:uniq_names) 
WITH a 
MATCH (b:all_names {name: a.name}) 
WHERE b.id1<>b.id2 
CREATE (a)-[:child]->(b); 
+0

感謝您的回答,我試過這個,它在大約3秒內返回結果,但仍然返回0行。 – 2015-02-11 07:48:31

+0

因爲你沒有'return'沒有返回。 – 2015-02-11 07:52:39

+0

是的,但問題是它也沒有創建任何關係。 – 2015-02-11 08:36:59