1. 关于本指南

本指南将介绍 Neo4j 5.x 简体中文版 的使用方法。 简体中文版包括了英文版全部功能。本指南仅介绍简体中文版扩展的功能,有关英文版原有功能请阅读 Neo4j 文档

通过学习本指南,您将了解 Neo4j 5.x 简体中文版的如下内容:

  • 功能特色

  • 部署运行

  • 视觉定制

  • 智能查询

2. 功能特色

由微云数聚(北京)有限公司研发的 Neo4j 简体中文版,是为中国用户量身定制的图数据库解决方案。除提供简体中文界面外,还提供了特别适合中国用户习惯的一组扩展功能,包括视觉扩展,如节点可显示图片(支持 jpg 和 gif 格式),数据驱动节点大小和颜色、关系连线的线宽和颜色等,使显示效果更加生动;扩展了查询命令的语法,使非技术人员也可直接查询。

Neo4j 5.x 简体中文版新增功能如下:

  • 视觉增强

    • 节点可显示图片

    • 节点可设置颜色和大小

    • 关系可设置颜色和线宽

  • 语法扩展

    • 智能查询

    • 全角支持

2.1. 可显示图片

英文版的节点只是简单的圆圈:

feature node english

中文版的节点可以显示成图片:

feature node chinese

2.2. 可设置颜色、大小和线宽

下面两张图展示的是两家公司之间的投资、担保关系图。

第一张图是英文版的效果,其节点的尺寸和颜色以及关系的线宽和颜色都是一样的,没有辨识度。

第二张图是简体中文版的效果,其中节点的尺寸反映注册资本的大小,红线表示投资关系,其线宽表示投资金额的大小,绿线表示担保关系,其线宽表示担保金额的大小。

很明显,扩展后的效果更加直观明了。

英文版没有辨识度:

feature color english

中文版更加直观:

feature color chinese

2.3. 智能查询

Neo4j 5.x 简体中文版增加了智能查询功能,只需在问号 ? 后面带若干关键词,便可查询与关键词匹配的对象之间的关系。这对非技术人员而言特别有用,他们不需要懂得 Cypher 语句也能轻松地进行查询。

例如,查询’国防科大’与’中科院’的关系,只需输入"?国防科大,中科院"即可。

?国防科大,中科院
feature smart query

2.4. 全角支持

支持全角字符语法元素,如 ():【】等,规避了英文版下需要频繁切换全角/半角的麻烦。

MATCH p=(:著作 {名称:‘权威指南’})-【:主编|副主编】-() RETURN p;
feature full width

3. 部署运行

部署 Neo4j 5.x 简体中文版非常简单,步骤如下:

  1. 预备

  2. 下载

  3. 安装

部署完成后,即可启动和使用 Neo4j 简体中文版了。

3.1. 预备

Neo4j 5.x 简体中文版要求先安装 jdk 17

如果之前安装过 Neo4j,则需先卸载已安装的服务。可到原安装的 bin 目录下执行下述命令:

../neo4j stop
../neo4j uninstall-service

Windows 用户注意:建议使用 Windows 10 而不用 Windows 7,后者运行 Neo4j 会出现问题,需要特别处理。

3.2. 下载

deploy download

3.3. 安装

安装步骤非常简单,只需展开已下载的压缩包。解压方法因系统而异:

Windows: 在"文件资源管理器",用鼠标右击下载的压缩包,选择"全部解压缩(T)…​"。

deploy unzip

Linux:在"命令终端",到压缩包所在目录展开压缩包,如:

tar -xf neo4j-chs-community-5.2.0-unix.tar.gz

3.4. 启动

Neo4j 简体中文版的启动过程与英文版一致。因系统不同而稍有差异:

Windows:(以管理员身份运行)

  1. 进入"命令提示符"

  2. 转到安装目录的 bin 子目录

  3. 执行命令:

neo4j console

Linux:(以 root 用户身份运行)

  1. 进入"命令终端"

  2. 转到安装目录的 bin 子目录

  3. 执行命令:

./neo4j console

3.5. 浏览

打开浏览器在地址栏输入:http://localhost:7474/

首次登录,输入用户名 neo4j 和初始密码 neo4j:

deploy login

修改登录密码:

deploy change password

登陆后的界面:

deploy browse

点击左侧的关于图标查看版本信息:

deploy version

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. 内置的节点尺寸选项

buildin diameters
diameter = '10px'|'20px'|'50px'|'65px'|'80px'

4.1.3. 内置的关系线宽选项

buildin shaft widths
shaft-width = '1px'|'2px'|'3px'|'5px'|'8px'|'13px'|'25px'|'38px'

4.1.4. 内置的颜色风格选项

buildin styles
(color, border-color, text-color-internal) = rs.style(0|1|2|3|4|5|6|7|8|9|10|11)

示例: 通过 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 *;
buildin styles demo

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 *;
node image

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 *;
node create

示例: 将’中航工业集团公司’和’宝胜股份’节点的颜色分别设置为风格 4 号和 8 号:

MATCH (n:Company {名称:'中航工业集团公司'}), (m:Company {名称:'宝胜股份'})
SET n += rs.style(4), m += rs.style(8)
RETURN *;
node color

4.2.3. 节点的尺寸属性

名称

节点的尺寸属性

属性

diameter

默认

'50px'

示例

'80px', 21.09

示例: 创建’中航工业集团公司’和’宝胜股份’节点,将节点的尺寸分别设置为各自的注册资本数值,即 260 和 100:

MATCH (n:Company {名称:'中航工业集团公司'}), (m:Company {名称:'宝胜股份'})
SET n.diameter=n.注册资本, m.diameter=m.注册资本
RETURN *;
node diameter

4.2.4. 节点的字体大小属性

名称

节点的字体大小属性

属性

font-size

默认

'10px'

示例

'20px'

示例: 将’中航工业集团公司’和’宝胜股份’节点的字体大小分别设置为 '30px' 和 '20px':

MATCH (n:Company {名称:'中航工业集团公司'}), (m:Company {名称:'宝胜股份'})
SET n.`font-size`='30px', m.`font-size`='20px'
RETURN *;
node font size

4.2.5. 节点的边框宽度属性

名称

节点的边框宽度属性

属性

border-width

默认

'2px'

示例

'12px'

示例: 将’中航工业集团公司’和’宝胜股份’节点的边框宽度分别设置为 '6px' 和 '3px':

MATCH (n:Company {名称:'中航工业集团公司'}), (m:Company {名称:'宝胜股份'})
SET n.`border-width`='6px', m.`border-width`='3px'
RETURN *;
node border width

4.2.6. 节点的标题属性

名称

节点的标题属性

属性

caption

默认

示例

n.注册资本 + ' 万元'

示例: 将颜色风格演示节点的标题设置为 "颜色风格 " + n.index:

MATCH (n:Style)
SET n.caption="颜色风格 " + n.index
RETURN *;
node caption

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 *;
edge create

示例: 将’投资’和’担保’关系的颜色分别设置为风格 4 号和 8 号:

MATCH (n:Company {名称:'中航工业集团公司'}), (m:Company {名称:'宝胜股份'})
MATCH (n)-[r1:投资]->(m), (n)-[r2:担保]->(m)
SET r1 += rs.style(4), r2 += rs.style(8)
RETURN *;
edge color

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 *;
edge shaft width

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 *;
edge font size

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 *;
edge padding

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 *;
edge caption

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. 进行智能查询

例如,查询’国防科大’与’中科院’的关系,只需输入"?国防科大,中科院"即可。

?国防科大,中科院
smart search