在 2 个节点之间创建关系

时间:2021-05-16 17:00:17

标签: neo4j cypher

我是 Neo4j 的新手,我的脚还是湿的。我有一个关于创建特定类型关系的问题。

我有 2 个文件:

文件 1 有文本数据和一个 ID 字段。文件 2 有 3 个字段 - 一个关键字字段,它是从前一个文件的文本数据中提取的文本/关键字,一个称为文本 ID 的 ID,它引用并与前一个文件中的文本 ID 相同,以及一个 ID对于关键字本身。

我创建了 2 个节点,一个具有 Text ID 和 text 属性的 Text 节点,以及一个只有属性“keyword”的 Keyword 节点。无论如何,我是否可以在这两个节点之间创建关系,我将在两个文件中以文本 ID 为基础,并创建一个关系,即 k.keyword - [:IS_IN] - t.text?

这是我到目前为止尝试运行的,但我不确定下一步该怎么做:

LOAD CSV WITH HEADERS FROM "file:///text.csv" AS row1
LOAD CSV WITH HEADERS FROM "file:///keyword.csv" AS row2
MATCH(t:Text {text_id:row1.text_id}), (k:Keyword {keyword:row2.Keyword})
//The part which I don't know what to do
MERGE (k)-[:IS_IN]->(t)

1 个答案:

答案 0 :(得分:1)

分别加载每个 csv。

第一次运行创建文本节点。示例:

LOAD CSV WITH HEADERS FROM "file:///text.csv" AS row1
MERGE (t:Text {text_id:row1.text_id})
SET t.text=row1.text

第二次运行创建关键字,通过 id 查找文本节点并创建关系。示例:

LOAD CSV WITH HEADERS FROM "file:///keyword.csv" AS row
MERGE (k:Keyword {keyword:row.Keyword})
WITH row,k
MATCH (t:Text {text_id:row.text_id}), 
MERGE (k)-[:IS_IN]->(t)
相关问题