所以我对使用图形数据库非常陌生,因此我选择了neo4j。我正在尝试基于图节点创建一个简单的推荐系统。
所以我有原始的CSV数据集,如下所示:
由于某些字段具有分号,因此我将它们分开并将其解析为新的CSV。 (基本上是将各个字段组合在一起)
新的CSV如下:
上图仅显示了N2,我也对N1和N3做过同样的事情。
现在,我需要以每种方式创建节点和关系
Name
知道Language
Name
起作用了,Database
。因此,我运行了以下查询:
LOAD CSV WITH HEADERS FROM "file:///data.csv" AS row
CREATE (n:Name {name: row.Name})
CREATE (l: Language {language: row.Language})
CREATE (d: Database {database: row.Database})
CREATE (n)-[:KNOWS]->(l)
CREATE (n)-[:WORKED_WITH]->(d)
这是我得到的以下输出:
仅针对N2个节点显示
由于我想建立推荐器,所以我的想法是将name
链接到language
和database
。
预期输出:
我想以这种方式链接它,这样我就可以计算出推荐给它的语言或数据库中传入节点的总数。
有人可以告诉我我要去哪里了吗
答案 0 :(得分:0)
使用 CREATE子句时,它每次都会创建一个新节点。
如果要使用现有节点并仅在不存在的节点上创建,则需要使用 MERGE 子句而不是创建 >。
这是您对MERGE的查询:
LOAD CSV WITH HEADERS FROM "file:///data.csv" AS row
MERGE (n:Name {name: row.Name})
MERGE (l: Language {Language: row.Language})
MERGE (d: Database {database: row.Database})
MERGE (n)-[:KNOWS]->(l)
MERGE (n)-[:WORKED_WITH]->(d)