自主练习一下Neo4j数据库(服务器上的Movie数据库作参考)

本文介绍了如何将CSV格式的数据导入Neo4j图数据库。首先,讲述了因Java版本冲突导致的启动问题,强调环境变量配置的重要性。然后详细说明了如何调整CSV数据格式,导入Person、Movie和关系表数据。最后,展示了使用Cypher语句创建节点和关系的过程,以及遇到的节点颜色显示问题。

Neo4j图数据库

Neo4j是一个世界领先的开源图形数据库。 它是由Neo技术使用Java语言完全开发的。(emmm,就这样,想知道更多,大家去百度吧)

Neo4j数据库的安装

大家可以参看这个博主的哦,我就是看的他的:Neo4j安装及简单使用
但是吧,我自己也遇到了一些问题。
1、由于以前学习的时候,安装的java版本是8,但是现在我现在下载的是java14,所以就存在两个JDK。然后呢,就报错,说我的jdk版本太低(系统找到的是java8的jdk),但是用命令(java -version)查出来的是java14。经过各种百度,各种修改,发现问题就是出在了环境变量上,所以大家一定要好好的仔仔细细的配置环境变量
(PS:问题其实没有解决,发现是环境变量问题,但是不管怎么改,就是错误。然而命运弄人,我去吃个饭,再次尝试启动,neo4j就可以跑起来了,感谢师兄,感谢上天)

说了这么多,重点就是:neo4j跑不起来的问题大概率是环境变量出错

开始下载服务器上面的表格(csv格式)

1、先导Person,Movie,这些节点数据表(因为导出的数据是类似Json格式的,所以需要大家手动调整数据格式。可以百度搜索EXCEL的分列功能,是个辛苦活,好好干,导出的数据会有一些数据少点东西,记得先挑出来哦)
在这里插入图片描述
2、然后是Acted_in表这种关系表,参照上面的调整数据格式

csv格式的数据准备好了,接下来就是开始利用neo4j导入数据啦

重申:这只是我的一次尝试,不代表大家一定要这么做。(求生欲满满)
1、先用load语句导入关系表,举个栗子:

load csv from “file:///ACTOR_IN00.csv” as line
create (n:ACTOR {name:line[0],born:line[1],role:line[2],ACTOR_IN00:“ACTOR_IN00”,tagline:line[3],title:line[4] ,released:line[5]})

看清哦我是创建的实体节点,我把它视为一种演员,表述为某某演员在某某电影里面扮演了某某角色
导入之后,你会看到很多单独的节点
在这里插入图片描述
2、同样利用load导入Person,Movie数据

load csv from “file:///Persone00.csv” as line
create (:Person00 {name:line[0],born:line[1]})

实际效果
参考
Movie类似,自己动手吧,嘿嘿(我懒)

3、接下来就是利用Create创建练习,使得Person节点和Movie串联起来。是时候用到第一步创建的ACTOR节点了

match(n:Person00),(m:Movie00),(r:ACTOR)
where n.name = r.name AND n.born = r.born AND m.title = r.title
create (n)-[:ACEDR_IN00]->(m)

看效果(我也不知道为什么我的都是灰色的,先留着这个问题,待会儿去解决,先记录下)
请添加图片描述

请添加图片描述
还有其他的关系,一样的道理,快去尝试吧。

都是灰色:可以自己去设置一下啊
在这里插入图片描述

### 使用 Neo4j 创建向量数据库 Neo4j 是一种强大的图形数据库,支持多种高级功能,包括创建和管理向量数据。为了实现这一点,通常会利用 Neo4j 的图数据科学库 (Graph Data Science Library, GDS),该库提供了丰富的机器学习算法集。 #### 安装必要的组件 首先,在 CentOS 上安装 Neo4j 可以通过指定 URL 下载 tarball 文件并解压到目标位置完成[^3]: ```bash curl -O https://neo4j.com/artifact.php?name=neo4j-community-3.5.6-unix.tar.gz tar -xf neo4j-community-3.5.6-unix.tar.gz cd neo4j-community-3.5.6/ bin/neo4j console ``` 接着配置 `neo4j.conf` 文件中的参数设置,确保启用了 APOC 插件以及内存映射等功能以便更好地处理大型矩阵运算[^2]: 编辑 `/etc/neo4j/neo4j.conf` 添加如下行: ```properties dbms.security.procedures.unrestricted=apoc.* dbms.memory.pagecache.size=2g ``` 重启服务使更改生效。 #### 构建向量索引 对于构建向量数据库而言,重要的是定义好节点属性为特征向量,并建立相应的索引来加速查询效率。假设有一个电影推荐场景下的评分表单,其中每部影片由多个维度描述其特性,则可以在导入这些记录之前先设计好模式结构。 创建标签为 "Movie" 和具有浮点型数组字段 "features" 表示各维权重的节点类目: ```cypher CREATE CONSTRAINT ON (m:Movie) ASSERT m.id IS UNIQUE; CREATE INDEX FOR (m:Movie { features:[0.0] }) ON EACH m.features; ``` 这里需要注意两点:一是确保唯一键约束的存在;二是针对多维数值建立了专门的索引形式来优化后续操性能。 #### 数据加载与预处理 接下来就是实际的数据填充过程了。可以通过批量插入语句或者借助外部工具如 Python 脚本来读取 CSV 文件等形式将原始资料转化为 Cypher 查询命令执行入库动。考虑到可能存在的缺失值情况,建议预先做适当清洗工再上传至服务器端解析运行。 例如,如果有一份名为 movies.csv 的文件包含了 id、title 字段外加若干个代表不同特性的列名(比如 genre、year 等),那么可以编写一段简单的脚本将其转换成适合 Neo4j 接受的形式: ```python import csv with open('movies.csv', 'r') as f: reader = csv.DictReader(f) for row in reader: feature_vector = [ float(row['genre']), int(row['year']) ] query = """ MERGE (m:Movie{id:{id}}) SET m += { title: {title}, features: {features} } """.format( id=row["id"], title=row["title"], features=str(feature_vector).replace("'", "") ) # 执行Cypher查询... ``` 此部分具体取决于所使用的编程环境和个人偏好而定。 #### 应用案例分析 最后介绍一个简单应用实例——基于余弦相似度计算两部品间的关联程度。这有助于理解如何运用已有的向量化表示来进行更复杂的推理任务。给定任意两个 Movie 类型实体 u 和 v ,可通过下面这段代码片段求得二者间夹角余弦值从而反映彼此之间潜在联系强度: ```cypher MATCH (u:Movie), (v:Movie) WHERE ID(u)=<source_id> AND ID(v)=<target_id> RETURN apoc.algo.cosineSimilarity(u.features, v.features); ``` 上述表达式中调用了来自APOC插件的方法实现了快速高效的矢量空间模型比较机制[^1]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值