一、导入数据
整体思路:使用csv格式导入
1.先把需要的数据制作成CSV格式,下载地址:百度云盘地址,提取码: p3yn
2.将这些csv文件移到neo4j项目的import文件夹下:
通过点击Open Folder
找到import文件夹,然后移入
3.导入电影信息
LOAD CSV WITH HEADERS FROM "file:///movie_movie.csv" AS line
CREATE (p:movie{movieid:line.movieid,title:line.title,year:line.year,length:line.length,genres:line.genres,rate:line.rate,poster:line.poster,plot:line.plot,trailer:line.trailer})
4.导入演员信息
LOAD CSV WITH HEADERS FROM "file:///movie_actor.csv" AS line
CREATE (p:actor{actorid:line.actorid,name:line.name,photo:line.photo})
5.创建电影和演员的关系
LOAD CSV WITH HEADERS FROM "file:///movie_act.csv" AS line
MATCH (entity1:movie{movieid:line.movieid_id}), (entity2:actor{actorid:line.actorid_id})
CREATE (entity2)-[:ACTED_IN]->(entity1);
6.导入用户信息
本demo里用户的信息只有id
LOAD CSV WITH HEADERS FROM "file:///user_user.csv" AS line
CREATE (p:user{userid:line.id})
7.导入用户对电影的评价信息
LOAD CSV WITH HEADERS FROM "file:///movie_popularity.csv" AS line
MATCH (entity1:user{userid:line.id}), (entity2:movie{movieid:line.movieid_id})
CREATE (entity1)-[:LIKE{ weight: line.weight }]->(entity2);
二、查询
- 查询节点
查询整个图形数据库:
MATCH(n) RETURN n;
-
查询具有指定Lable的节点
MATCH(n:movie) RETURN n;
查询电影名为Avatar的电影的节点:
MATCH(n) WHERE n.title="Avatar" RETURN n;
- 查询关系
在Cypher中,关系分为三种:符号--,表示有关系,忽略关系的类型和方向;符号-->和<--,表示有方向的关系;
- 查询跟指定节点有关系的节点
MATCH(n)--(m:movie) RETURN n;
- 查询有向关系的节点
MATCH (:actor { name: 'Sam Worthington' }) --> (n:movie) RETURN n;
- 为关系命名,通过[r]为关系定义一个变量名,通过函数type获取关系的类型
MATCH (:actor { name: 'Sam Worthington' })-[r]->(n) RETURN r,type(r);
- 查询特定的关系类型,通过[Variable:RelationshipType{Key:Value}]指定关系的类型和属性
MATCH (:user { userid: '6' })-[:LIKE]->(n:movie) RETURN n;