Neo4j。从两个表创建图形
Neo4j. Create graph from two tables
我有两个包含节点和边的 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 MERGE (j:J {word2 : line[1]}) WITH g,j MERGE (g)-[:From_To]->(j);
但在这种情况下,每个单词出现两次。我怎样才能只做唯一的单词关系并添加名词和形容词组?
我想要这样的东西http://joxi.ru/1A5QX6MH6LZ1AE
您将 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 )
由于您无法动态设置标签,我不得不使用 http://www.markhneedham.com/blog/2014/06/17/neo4j-load-csv-handling-conditionals/
中记录的 FOREACH
技巧
如果您的图表中有多个节点,请考虑在 运行 LOAD CSV
:
之前创建索引
CREATE INDEX ON :Word(word)
我有两个包含节点和边的 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 MERGE (j:J {word2 : line[1]}) WITH g,j MERGE (g)-[:From_To]->(j);
但在这种情况下,每个单词出现两次。我怎样才能只做唯一的单词关系并添加名词和形容词组?
我想要这样的东西http://joxi.ru/1A5QX6MH6LZ1AE
您将 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 )
由于您无法动态设置标签,我不得不使用 http://www.markhneedham.com/blog/2014/06/17/neo4j-load-csv-handling-conditionals/
中记录的FOREACH
技巧
如果您的图表中有多个节点,请考虑在 运行 LOAD CSV
:
CREATE INDEX ON :Word(word)