【发布时间】:2016-02-10 03:52:16
【问题描述】:
我导入了一张包含数千个设备的桌子。然后又导入了另外一张表,里面有设备的种类,大概有20种左右。
当我编写下面的密码查询来关联它们时,Neo4j 警告我关于笛卡尔积。有没有更好的方法来创建关联?我应该在 CSV 导入期间完成吗?
MATCH (te:Equipment_Type),(e:Equipment)
WHERE te.type_id = e.type_id
CREATE (e)-[:TYPE_OF]→(te)
更新
在导入 CSV 期间,我尝试了 Brian 建议的方法,并且工作起来非常棒。
- 先导入设备类型;
- 然后在 Equipment(type_id) 上创建和索引;
- 修改了 CSV 导入期间搜索的代码。
从 Neo4j 控制台:
添加100812个标签,创建100812个节点,设置414307个属性, 创建了 100812 个关系,语句在 33902 毫秒内执行。
代码:
CREATE INDEX ON :Equipment(type_id)
USING PERIODIC COMMIT 1000
LOAD CSV WITH HEADERS FROM "http://localhost/Equipments.csv" AS row
MERGE (e:Equipment {eqp_id: row.eqp_id, name: row.name, type_id: row.type_id})
WITH e, row
MATCH (te:Equipemnt_Type)
WHERE te.type_id = row.type_id
CREATE (e)-[:TYPE_OF]->(te)
【问题讨论】:
标签: graph neo4j cypher cartesian-product