1. 关于本指南
本指南将介绍 Neo4j 5.x 简体中文版 的使用方法。 简体中文版包括了英文版全部功能。本指南仅介绍简体中文版扩展的功能,有关英文版原有功能请阅读 Neo4j 文档。
通过学习本指南,您将了解 Neo4j 5.x 简体中文版的如下内容:
-
功能特色
-
部署运行
-
视觉定制
-
智能查询
2. 功能特色
由微云数聚(北京)有限公司研发的 Neo4j 简体中文版,是为中国用户量身定制的图数据库解决方案。除提供简体中文界面外,还提供了特别适合中国用户习惯的一组扩展功能,包括视觉扩展,如节点可显示图片(支持 jpg 和 gif 格式),数据驱动节点大小和颜色、关系连线的线宽和颜色等,使显示效果更加生动;扩展了查询命令的语法,使非技术人员也可直接查询。
Neo4j 5.x 简体中文版新增功能如下:
-
视觉增强
-
节点可显示图片
-
节点可设置颜色和大小
-
关系可设置颜色和线宽
-
-
语法扩展
-
智能查询
-
全角支持
-
2.1. 可显示图片
英文版的节点只是简单的圆圈:
中文版的节点可以显示成图片:
2.2. 可设置颜色、大小和线宽
下面两张图展示的是两家公司之间的投资、担保关系图。
第一张图是英文版的效果,其节点的尺寸和颜色以及关系的线宽和颜色都是一样的,没有辨识度。
第二张图是简体中文版的效果,其中节点的尺寸反映注册资本的大小,红线表示投资关系,其线宽表示投资金额的大小,绿线表示担保关系,其线宽表示担保金额的大小。
很明显,扩展后的效果更加直观明了。
英文版没有辨识度:
中文版更加直观:
2.3. 智能查询
Neo4j 5.x 简体中文版增加了智能查询功能,只需在问号 ? 后面带若干关键词,便可查询与关键词匹配的对象之间的关系。这对非技术人员而言特别有用,他们不需要懂得 Cypher 语句也能轻松地进行查询。
例如,查询’国防科大’与’中科院’的关系,只需输入"?国防科大,中科院"即可。
?国防科大,中科院
2.4. 全角支持
支持全角字符语法元素,如 ():【】等,规避了英文版下需要频繁切换全角/半角的麻烦。
MATCH p=(:著作 {名称:‘权威指南’})-【:主编|副主编】-() RETURN p;
3. 部署运行
部署 Neo4j 5.x 简体中文版非常简单,步骤如下:
-
预备
-
下载
-
安装
部署完成后,即可启动和使用 Neo4j 简体中文版了。
3.1. 预备
Neo4j 5.x 简体中文版要求先安装 jdk 17。
如果之前安装过 Neo4j,则需先卸载已安装的服务。可到原安装的 bin 目录下执行下述命令:
../neo4j stop
../neo4j uninstall-service
Windows 用户注意:建议使用 Windows 10 而不用 Windows 7,后者运行 Neo4j 会出现问题,需要特别处理。
3.3. 安装
安装步骤非常简单,只需展开已下载的压缩包。解压方法因系统而异:
Windows: 在"文件资源管理器",用鼠标右击下载的压缩包,选择"全部解压缩(T)…"。
Linux:在"命令终端",到压缩包所在目录展开压缩包,如:
tar -xf neo4j-chs-community-5.2.0-unix.tar.gz
3.4. 启动
Neo4j 简体中文版的启动过程与英文版一致。因系统不同而稍有差异:
Windows:(以管理员身份运行)
-
进入"命令提示符"
-
转到安装目录的 bin 子目录
-
执行命令:
neo4j console
Linux:(以 root 用户身份运行)
-
进入"命令终端"
-
转到安装目录的 bin 子目录
-
执行命令:
./neo4j console
3.5. 浏览
打开浏览器在地址栏输入:http://localhost:7474/
首次登录,输入用户名 neo4j 和初始密码 neo4j:
修改登录密码:
登陆后的界面:
点击左侧的关于图标查看版本信息:
4. 可视化定制
4.1. 可视化定制概述
4.1.1. 可视化属性
名称 | 属性 | 默认 | 示例 |
---|---|---|---|
节点的图片属性 |
image |
'http://we-yun.com/image/著作/著作.jpg' |
|
节点的颜色属性 |
(color, border-color, text-color-internal) |
rs.style(-1) |
rs.style(4) |
节点的尺寸属性 |
diameter |
'50px' |
'80px', 21.09 |
节点的字体大小属性 |
font-size |
'10px' |
'20px' |
节点的边框宽度属性 |
border-width |
'2px' |
'12px' |
节点的标题属性 |
caption |
n.注册资本 + ' 万元' |
|
关系的颜色属性 |
(color, text-color-external, text-color-internal) |
rs.style(-1) |
rs.style(4) |
关系的线宽属性 |
shaft-width |
'1px' |
'2px', 14.13 |
关系的字体大小属性 |
font-size |
'8px' |
'20px' |
关系的文字填充属性 |
padding |
'3px' |
'6px' |
关系的标题属性 |
caption |
'<type>' |
'投资 ' + r1.投资金额 + ' 万元' |
4.1.2. 内置的节点尺寸选项
4.1.3. 内置的关系线宽选项
4.1.4. 内置的颜色风格选项
示例: 通过 rs.style() 函数获取所有内置的颜色风格:
UNWIND range(0, 11) AS index return rs.style(index) AS style;
index color border-color text-color-internal
0 '#604A0E' '#423204' '#FFFFFF'
1 '#C990C0' '#b261a5' '#FFFFFF'
2 '#F79767' '#f36924' '#FFFFFF'
3 '#57C7E3' '#23b3d7' '#2A2C34'
4 '#F16667' '#eb2728' '#FFFFFF'
5 '#D9C8AE' '#c0a378' '#2A2C34'
6 '#8DCC93' '#5db665' '#2A2C34'
7 '#ECB5C9' '#da7298' '#2A2C34'
8 '#4C8EDA' '#2870c2' '#FFFFFF'
9 '#FFC454' '#d7a013' '#2A2C34'
10 '#DA7194' '#cc3c6c' '#FFFFFF'
11 '#569480' '#447666' '#FFFFFF'
示例: 通过 rs.style() 函数获取所有内置的颜色风格并创建相应演示节点:
UNWIND range(0, 11) AS index
CREATE (s:Style {index:index})
SET s += rs.style(index)
RETURN *;
4.2. 节点的可视化属性
4.2.1. 节点的图片属性
名称 |
节点的图片属性 |
---|---|
属性 |
image |
默认 |
|
示例 |
'http://we-yun.com/image/著作/著作.jpg' |
示例: 创建《Neo4j 权威指南》的作者及其之间的关系:
WITH 'http://we-yun.com/image/' AS url
CREATE
(张帜:人员 {名称:"张帜", image:url+'作者/张帜.jpg'}),
(苏亮:人员 {名称:"苏亮", image:url+'作者/苏亮.jpg'}),
(赵炳:人员 {名称:"赵炳", image:url+'作者/赵炳.jpg'}),
(李敏:人员 {名称:"李敏", image:url+'作者/李敏.jpg'}),
(庞国明:人员 {名称:"庞国明", image:url+'作者/庞国明.jpg'}),
(胡佳辉:人员 {名称:"胡佳辉", image:url+'作者/胡佳辉.jpg'}),
(陈振宇:人员 {名称:"陈振宇", image:url+'作者/陈振宇.jpg'}),
(高兴宇:人员 {名称:"高兴宇", image:url+'作者/高兴宇.jpg'}),
(薛述强:人员 {名称:"薛述强", image:url+'作者/薛述强.jpg'}),
(董琴洁:人员 {名称:"董琴洁", image:url+'作者/董琴洁.jpg'}),
(中科院:大学 {名称:'中科院', image:url+'大学/中科院.jpg'}),
(北体大:大学 {名称:"北体大", image:url+'大学/北体大.jpg'}),
(国防科大:大学 {名称:'国防科大', image:url+'大学/国防科大.jpg'}),
(枣庄学院:大学 {名称:"枣庄学院", image:url+'大学/枣庄学院.jpg'}),
(西安交大:大学 {名称:"西安交大", image:url+'大学/西安交大.jpg'}),
(北京邮大:大学 {名称:"北京邮大", image:url+'大学/北京邮大.jpg'}),
(西南交大:大学 {名称:"西南交大", image:url+'大学/西南交大.jpg'}),
(权威指南:著作 {名称:'权威指南', image:url+'著作/著作.jpg'}),
(张帜)-[:毕业于]->(国防科大),
(苏亮)-[:毕业于]->(国防科大),
(赵炳)-[:毕业于]->(北京邮大),
(李敏)-[:毕业于]->(中科院),
(庞国明)-[:毕业于]->(枣庄学院),
(胡佳辉)-[:毕业于]->(西南交大),
(陈振宇)-[:毕业于]->(中科院),
(高兴宇)-[:毕业于]->(中科院),
(薛述强)-[:毕业于]->(西安交大),
(董琴洁)-[:毕业于]->(北体大),
(张帜)-[:主编]->(权威指南),
(苏亮)-[:副主编]->(权威指南),
(庞国明)-[:副主编]->(权威指南),
(胡佳辉)-[:副主编]->(权威指南),
(赵炳)-[:作者]->(权威指南),
(李敏)-[:作者]->(权威指南),
(陈振宇)-[:作者]->(权威指南),
(高兴宇)-[:作者]->(权威指南),
(薛述强)-[:作者]->(权威指南),
(董琴洁)-[:作者]->(权威指南)
RETURN *;
4.2.2. 节点的颜色属性
名称 |
节点的颜色属性 |
---|---|
属性 |
(color, border-color, text-color-internal) |
默认 |
rs.style(-1) |
示例 |
rs.style(4) |
示例: 创建’中航工业集团公司’和’宝胜股份’节点:
CREATE (n:Company {名称:'中航工业集团公司'}), (m:Company {名称:'宝胜股份'})
SET n.注册资本=260, m.注册资本=100
RETURN *;
示例: 将’中航工业集团公司’和’宝胜股份’节点的颜色分别设置为风格 4 号和 8 号:
MATCH (n:Company {名称:'中航工业集团公司'}), (m:Company {名称:'宝胜股份'})
SET n += rs.style(4), m += rs.style(8)
RETURN *;
4.2.3. 节点的尺寸属性
名称 |
节点的尺寸属性 |
---|---|
属性 |
diameter |
默认 |
'50px' |
示例 |
'80px', 21.09 |
示例: 创建’中航工业集团公司’和’宝胜股份’节点,将节点的尺寸分别设置为各自的注册资本数值,即 260 和 100:
MATCH (n:Company {名称:'中航工业集团公司'}), (m:Company {名称:'宝胜股份'})
SET n.diameter=n.注册资本, m.diameter=m.注册资本
RETURN *;
4.2.4. 节点的字体大小属性
名称 |
节点的字体大小属性 |
---|---|
属性 |
font-size |
默认 |
'10px' |
示例 |
'20px' |
示例: 将’中航工业集团公司’和’宝胜股份’节点的字体大小分别设置为 '30px' 和 '20px':
MATCH (n:Company {名称:'中航工业集团公司'}), (m:Company {名称:'宝胜股份'})
SET n.`font-size`='30px', m.`font-size`='20px'
RETURN *;
4.2.5. 节点的边框宽度属性
名称 |
节点的边框宽度属性 |
---|---|
属性 |
border-width |
默认 |
'2px' |
示例 |
'12px' |
示例: 将’中航工业集团公司’和’宝胜股份’节点的边框宽度分别设置为 '6px' 和 '3px':
MATCH (n:Company {名称:'中航工业集团公司'}), (m:Company {名称:'宝胜股份'})
SET n.`border-width`='6px', m.`border-width`='3px'
RETURN *;
4.2.6. 节点的标题属性
名称 |
节点的标题属性 |
---|---|
属性 |
caption |
默认 |
|
示例 |
n.注册资本 + ' 万元' |
示例: 将颜色风格演示节点的标题设置为 "颜色风格 " + n.index:
MATCH (n:Style)
SET n.caption="颜色风格 " + n.index
RETURN *;
4.3. 关系的可视化属性
4.3.1. 关系的颜色属性
名称 |
关系的颜色属性 |
---|---|
属性 |
(color, text-color-external, text-color-internal) |
默认 |
rs.style(-1) |
示例 |
rs.style(4) |
示例: 创建’投资’和’担保’关系:
MATCH (n:Company {名称:'中航工业集团公司'}), (m:Company {名称:'宝胜股份'})
CREATE (n)-[r1:投资]->(m), (n)-[r2:担保]->(m)
SET r1.投资金额=9.05, r2.担保金额=4.53
RETURN *;
示例: 将’投资’和’担保’关系的颜色分别设置为风格 4 号和 8 号:
MATCH (n:Company {名称:'中航工业集团公司'}), (m:Company {名称:'宝胜股份'})
MATCH (n)-[r1:投资]->(m), (n)-[r2:担保]->(m)
SET r1 += rs.style(4), r2 += rs.style(8)
RETURN *;
4.3.2. 关系的线宽属性
名称 |
关系的线宽属性 |
---|---|
属性 |
shaft-width |
默认 |
'1px' |
示例 |
'2px', 14.13 |
示例: 设置’投资’关系和’担保’关系的线宽分别为 5 和 15.16:
MATCH (n:Company {名称:'中航工业集团公司'}), (m:Company {名称:'宝胜股份'})
MATCH (n)-[r1:投资]->(m), (n)-[r2:担保]->(m)
SET r1.`shaft-width`=5, r2.`shaft-width`=15.16
RETURN *;
4.3.3. 关系的字体大小属性
名称 |
关系的字体大小属性 |
---|---|
属性 |
font-size |
默认 |
'8px' |
示例 |
'20px' |
示例: 设置’投资’关系的字体大小为'12px':
MATCH (n:Company {名称:'中航工业集团公司'}), (m:Company {名称:'宝胜股份'})
MATCH (n)-[r1:投资]->(m), (n)-[r2:担保]->(m)
SET r1.`font-size`='12px', r2.`font-size`='24px'
RETURN *;
4.3.4. 关系的文字填充属性
名称 |
关系的文字填充属性 |
---|---|
属性 |
padding |
默认 |
'3px' |
示例 |
'6px' |
示例: 设置’投资’和’担保’关系的文字填充分别为 '10px' 和 '20px':
MATCH (n:Company {名称:'中航工业集团公司'}), (m:Company {名称:'宝胜股份'})
MATCH (n)-[r1:投资]->(m), (n)-[r2:担保]->(m)
SET r1.padding='10px', r2.padding='20px'
RETURN *;
4.3.5. 关系的标题属性
名称 |
关系的标题属性 |
---|---|
属性 |
caption |
默认 |
'<type>' |
示例 |
'投资 ' + r1.投资金额 + ' 万元' |
示例: 使’投资金额’和’担保金额’的数值分别出现在’投资’和’担保’关系的标题中:
MATCH (n:Company {名称:'中航工业集团公司'}), (m:Company {名称:'宝胜股份'})
MATCH (n)-[r1:投资]->(m), (n)-[r2:担保]->(m)
SET r1.caption='投资 '+r1.投资金额+' 万元', r2.caption='担保 '+r2.担保金额+' 万元'
RETURN *;
5. 智能查询
5.1. 创建全文索引
为启用智能查询功能,需要用以下命令创建全文索引:
CREATE FULLTEXT INDEX 名称 FOR (n:人员|大学|著作) ON EACH [n.名称]
【注】在 5.x 之前版本,用以下过程创建全文索引:
call db.index.fulltext.createNodeIndex("名称", ["人员","大学","著作"], ["名称"]); // 索引名称,标签列表,属性列表
5.2. 删除全文索引
如果需要修改全文索引,则需要用以下命令先删去已创建的全文索引:
DROP INDEX 名称
【注】在 5.x 之前版本,用以下过程删去已创建的全文索引:
call db.index.fulltext.drop("名称"); // 索引名称
5.3. 进行智能查询
例如,查询’国防科大’与’中科院’的关系,只需输入"?国防科大,中科院"即可。
?国防科大,中科院