Neo4j。从两个表创建图形
我有两个带有节点和边的csv文件Neo4j。从两个表创建图形,neo4j,edges,Neo4j,Edges,我有两个带有节点和边的csv文件 nodes: big, adjective arm, noun face, noun, best, adjective edges: big, face best, friend face, arm 我想通过边创建关系图,并添加节点组:名词和形容词 我使用此命令创建关系: LOAD CSV FROM 'file:copperfield_edges.csv' AS line MERGE (g:G {word1 : line[0]}) WITH line, g
nodes:
big, adjective
arm, noun
face, noun,
best, adjective
edges:
big, face
best, friend
face, arm
我想通过边创建关系图,并添加节点组:名词和形容词
我使用此命令创建关系:
LOAD CSV FROM 'file:copperfield_edges.csv' AS line MERGE (g:G {word1 : line[0]}) WITH line, g MERGE (j:J {word2 : line[1]}) WITH g,j MERGE (g)-[:From_To]->(j);
但在这种情况下,每个单词出现两次。我怎样才能只处理单词之间的独特关系,并添加名词和形容词组
我想得到这样的东西您将
G
标签分配给第一列中的所有节点,将J
标签分配给第二列中的所有节点。因为每个单词都有一个标识符(例如,big
,face
),所以对所有单词使用一个标签,例如,word
请尝试以下操作:
LOAD CSV FROM 'file:copperfield_edges.csv' AS line
MERGE (g:Word {word : line[0]})
MERGE (j:Word {word : line[1]})
MERGE (g)-[:From_To]->(j);
根据节点csv文件,可以指定一个附加标签,指示单词是形容词还是名词:
LOAD CSV FROM 'file:nodes.csv' AS line
MERGE (w:Word {word: line[0]})
FOREACH (n in (CASE WHEN line[1] = "adjective" THEN [1] ELSE [] END) |
set w :Adjective )
FOREACH (n in (CASE WHEN line[1] = "nound" THEN [1] ELSE [] END) |
set w :Noun )
由于无法动态设置标签,因此我不得不使用
如果您的图表超过一小部分节点,请考虑在运行<代码> >加载CSV < /C> >之前创建索引:
CREATE INDEX ON :Word(word)