(六)Neo4j综合项目

0、概述

本文以热播电视剧《人民的名义》中的人物关系为数据基础,抛开案例本身的内容,本项目的意义在于指出使用Neo4j数据库的一般流程是什么?包括数据的导入、操作、查询、展示,从而体会出与传统数据库相比Neo4j在处理图数据的巨大威力和方便之处。

《人民的名义》人物关系图谱

1、准备节点数据

Merge (n:People {name:"蔡成功",image:"caichenggong.png"})
Merge (n1:People {name:"欧阳青",image:"ouyangqing.png"})
Merge (n2:People {name:"李达康",image:"lidakang.png"})
Merge (n3:People {name:"沙瑞金",image:"sharuijin.png"})
Merge (n4:People {name:"高玉良",image:"gaoyuliang.png"})
Merge (n5:People {name:"侯亮平",image:"houliangping.png"})
Merge (n6:People {name:"赵东来",image:"zhaodonglai.png"})
Merge (n7:People {name:"陆亦可",image:"luyike.png"})
Merge (n8:People {name:"周正",image:"zhouzheng.png"})Merge (n110:People {name:"陈海",image:"chenhai.png"})
Merge (n111:People {name:"祁同伟",image:"qitongwei.png"})
Merge (n112:People {name:"陈岩石",image:"chenyanshi.png"})
Merge (n113:People {name:"高小琴",image:"gaoxiaoqin.png"})
Merge (n114:People {name:"欧阳青",image:"ouyangqing.png"})
Merge (n115:People {name:"丁义诊",image:"dingyizhen.png"})
Merge (n116:People {name:"王大路",image:"wangdalu.png"})
Merge (n117:People {name:"高玉良",image:"gaoyuliang.png"})
Merge (n118:People {name:"吴慧芬",image:"wuhuifen.png"})
Merge (n119:People {name:"钟小艾",image:"zhongxiaoai.png"})
Merge (n1110:People {name:"林华华",image:"linhuahua.png"})
Merge (n11a:People {name:"王馥真",image:"wangfuzhen.png"})
Merge (n11v:People {name:"季昌明",image:"jichangming.png"})
Merge (n11c:People {name:"陈阳",image:"chenyang.png"})
Merge (n11s:People {name:"梁璐",image:"lianglu.png"})
Merge (n11w:People {name:"高小琴",image:"gaoxiaoqin.png"})
Merge (n11d:People {name:"郑西坡",image:"zhenxipo.png"})
Merge (n11g:People {name:"高小凤",image:"gaoxiaofeng.png"})

2、准备关系数据

# 逐行粘贴执行
Match (n:People {name:"蔡成功"}),(b:People {name:"欧阳青"}) Merge(n)-[:贿赂]->(b)    
Match (n:People {name:"蔡成功"}),(b:People {name:"侯亮平"}) Merge(n)-[:发小]->(b)  
Match (n:People {name:"欧阳青"}),(b:People {name:"丁义诊"}) Merge(n)-[:合作]->(b)  
Match (n:People {name:"欧阳青"}),(b:People {name:"王大路"}) Merge(n)-[:朋友]->(b)  
Match (n:People {name:"欧阳青"}),(b:People {name:"李达康"}) Merge(n)-[:夫妻]->(b)  Match (n:People {name:"李达康"}),(b:People {name:"王大路"}) Merge(n)-[:前同事]->(b)  
Match (n:People {name:"李达康"}),(b:People {name:"丁义诊"}) Merge(n)-[:下属]->(b)  
Match (n:People {name:"李达康"}),(b:People {name:"高玉良"}) Merge(n)-[:同事]->(b)  
Match (n:People {name:"沙瑞金"}),(b:People {name:"高玉良"}) Merge(n)-[:下属]->(b)  
Match (n:People {name:"沙瑞金"}),(b:People {name:"李达康"}) Merge(n)-[:下属]->(b)  
Match (n:People {name:"沙瑞金"}),(b:People {name:"祁同伟"}) Merge(n)-[:下属]->(b)  
Match (n:People {name:"高玉良"}),(b:People {name:"祁同伟"}) Merge(n)-[:学生]->(b)  
Match (n:People {name:"高玉良"}),(b:People {name:"侯亮平"}) Merge(n)-[:学生]->(b)  
Match (n:People {name:"高玉良"}),(b:People {name:"陈海"})   Merge(n)-[:学生]->(b)  
Match (n:People {name:"高玉良"}),(b:People {name:"吴慧芬"}) Merge(n)-[:夫妻]->(b)  
Match (n:People {name:"侯亮平"}),(b:People {name:"钟小艾"}) Merge(n)-[:夫妻]->(b)  
Match (n:People {name:"侯亮平"}),(b:People {name:"陈海"})   Merge(n)-[:同学]->(b)  
Match (n:People {name:"侯亮平"}),(b:People {name:"陆亦可"}) Merge(n)-[:下属]->(b)  
Match (n:People {name:"侯亮平"}),(b:People {name:"赵东来"}) Merge(n)-[:办案]->(b)
Match (n:People {name:"赵东来"}),(b:People {name:"陆亦可"}) Merge(n)-[:喜欢]->(b)  
Match (n:People {name:"陆亦可"}),(b:People {name:"陈海"})   Merge(n)-[:喜欢]->(b)  
Match (n:People {name:"陆亦可"}),(b:People {name:"周正"})   Merge(n)-[:下属]->(b)  
Match (n:People {name:"陆亦可"}),(b:People {name:"林华华"}) Merge(n)-[:下属]->(b)  
Match (n:People {name:"周正"}),(b:People {name:"林华华"})   Merge(n)-[:情侣]->(b)  
Match (n:People {name:"陈海"}),(b:People {name:"陈岩石"})   Merge(n)-[:父亲]->(b)  
Match (n:People {name:"陈海"}),(b:People {name:"王馥真"})   Merge(n)-[:母亲]->(b)  
Match (n:People {name:"陈海"}),(b:People {name:"季昌明"})   Merge(n)-[:上级]->(b)  
Match (n:People {name:"陈海"}),(b:People {name:"陈阳"}) Merge(n)-[:姐姐]->(b)  
Match (n:People {name:"祁同伟"}),(b:People {name:"陈阳"})   Merge(n)-[:初恋]->(b)  
Match (n:People {name:"祁同伟"}),(b:People {name:"梁璐"})   Merge(n)-[:夫妻]->(b)  
Match (n:People {name:"祁同伟"}),(b:People {name:"高小琴"}) Merge(n)-[:情妇]->(b)  
Match (n:People {name:"陈岩石"}),(b:People {name:"郑西坡"}) Merge(n)-[:前下属]->(b)  
Match (n:People {name:"高小琴"}),(b:People {name:"高小凤"}) Merge(n)-[:姐妹]->(b)  
数据导入后效果图

 

3、人物关系分析

# 六层关系理论:世界上任何2个人的关系都不超过6层
Match p=allshortestpaths((N:People {name:'蔡成功'})-[*..6]-(m:People  {name:'季昌明'})) return p
“蔡成功”和“季昌明”之间所有的最短路径

4、使用D3.js对Neo4j进行可视化

Neo4j browser 是面向数据分析人员的,Neo4j browser现成的效果是没法在Web系统里进行可视化展示或者嵌入,必须使用D3插件重新实现eo4j browser的某些功能。

具体该怎么做,Neo4j官网有相关的说明(https://neo4j.com/developer/tools-graph-visualization/#_visualization_resources),其效果图如下,(官网也是使用D3.js实现的,效果远不如Neo4j官网):

前端重新实现“展示所有关系”功能

5、总结

本项目Web结构代码稍多,并且是某个培训机构的代码,这里就不方便贴出了,上面的讲课内容也大部分出自该课程。最后这个项目懂的java前端开发的容易做出来,这里的重点还是应用Neo4j自带的可视化功能,并且Neo4j本身的可视化功能已经很优秀了。

 

 

 

 

 

 

 

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/420890.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

过滤器filter,监听器listener

目录1. filter过滤器1.1 原理1.2 配置1.3 过滤掉脏话demo2. listener监听器2.1 作用2.2 ServletContextListener demo1. filter过滤器 作用:过滤servlet,jsp,js,css,图片对象,以及一切在服务器,客户端想访…

LevelDB 之 arena

粒度比较大,实现简洁清晰明了。对比nginx的,nginx从小到大各种尺寸都有,适用性更好一些。相对要精细很多。Arena.h//z 2014-06-05 10:48:50 L.20947470 BG57IV3 T1840949363.K.F1370514324[T6,L108,R4,V118]// Copyright (c) 2011 The LevelD…

(一)elasticsearch6.1.1安装详细过程

1、配置java环境 检查java环境 满足elasticsearch6.1.1java环境要求; 2、安装ElasticSearch6.1.1 ①为es新生成用户、用户组 su root groupadd esgroup useradd ela -g esgroup -p 5tgbhu8[rootlocalhost fibonacci]# su ela Attempting to create directory /h…

使用jdk DOM,SAX和第三方jar包DOM4J创建,解析xml文件

xml的创建,解析1. 什么是xml文件1.1 什么是xml文件1.2 解析xml的方式,优缺点2. 使用dom操作xml文件2.1 使用dom创建xml文件2.2 使用dom解析xml文件2.3 使用dom对xml文件增删改3. 使用SAX解析xml文件4. 使用DOM4J操作xml文件4.1 使用DOM4J创建xml文件4.2 …

c# 错误 两个输出文件名解析为同一个输出路径

检查同项目的其他文件夹下面已有其他同名窗体,影响设计器 转载于:https://www.cnblogs.com/xiaxiaolu/p/4367166.html

(二)ElasticSearch6.1.1 Python API

0、准备开启数据库 ① 关闭Linux防火墙,这个很重要,否则API总是报错连不上。 # 查看防火墙状态 firewall-cmd --state# 关闭防护墙 systemctl stop firewalld.service# 开启防火墙 systemctl start firewalld.service# 重启防火墙 systemctl restart f…

sqlite3数据库使用

SQLite简介 SQLite是一个软件库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。SQLite是一个增长最快的数据库引擎,这是在普及方面的增长,与它的尺寸大小无关。SQLite 源代码不受版权限制。 什么是sqlite SQLite是一…

(三)ElasticSearch的基本概念

0、面向文档 应用中的对象很少只是简单的键值列表,更多时候它拥有复杂的数据结构,比如包含日期、地理位置、另一个对象或者数组。 总有一天你会想到把这些对象存储到数据库中。将这些数据保存到由行和列组成的关系数据库中,就好像是把一个丰…

(四)ElasticSearch之数据

0、概述 在Elasticsearch中,每一个字段的数据都是默认被索引的。也就是说,每个字段专门有一个反向索引用于快速检索。而且,与其它数据库不同,它可以在同一个查询中利用所有的这些反向索引,以惊人的速度返回结果。 1、…

ajax下拉框省市级联动

目录效果sql数据前后台代码实现效果 初始访问页面 选中省会,自动刷新页面 sql数据 -- 省市联动数据CREATE TABLE PROVINCE (PID NUMBER PRIMARY KEY,PNAME VARCHAR(20) NOT NULL )SELECT * FROM PROVINCEINSERT INTO province VALUES (1, 北京市); INSERT I…

emacs中安装markdown-mode

从markdown-mode官网下载markdown-mode.el 将markdown-mode.el文件放到你的emacs loadpath.这里假如是 ~/.emacs.d/ 在 ~/.emacs 中加入如下代码 (autoload markdown-mode "markdown-mode" "Major mode for editing Markdown files" t) (add-to-list auto-…

python的with关键字

with语句适用于对资源进行访问的场合,确保不管使用过程中是否发生异常都会执行必要的“清理”操作,释放资源,比如文件使用后自动关闭、线程中锁的自动获取和释放等。with表达式其实是try-finally的简写形式。但是又不是全相同。 ""…

pgm2

MRF 笔记 我们先讨论引入 MRF 的必要性。经典的例子就是四个 r.v.s 连成一个正方形的结构的时候,我们没法通过 BN 获得给定对角线两个 r.v.s 而剩下的条件独立(不都是 d-sep),反过来如果希望通过 MRF 刻画某些 BN 也是不可行的&am…

一步一步学Remoting系列文章

转自:http://www.cnblogs.com/lovecherry/archive/2005/05/24/161437.html (原创)一步一步学Remoting之一:从简单开始 (原创)一步一步学Remoting之二:激活模式 (原创)一步一步学Remoting之三:复杂对象 (原创)一步一步学Remoting之…

(五)ElasticSearch 6.1.1数据类型

1、elasticsearch的数据类型 1.1、核心数据类型 1.1.1、字符串类型(string不再支持) 当一个字段需要用于全文搜索(会被分词), 比如产品名称、产品描述信息, 就应该使用text类型. text的内容会被分词, 可以设置是否需要存储: “index”: “true|false”…

(六)ElasticSearch 6.1.1聚合查询

1 普通类型 1.1 基本操作 1.1.1 导入实战数据 数据字段如下: 字段类型作用pricelong汽车售价colortext汽车颜色maketext汽车品牌solddate销售日期 # 创建索引 PUT /cars {"mappings" : {"transactions" : {"properties" : {"…

12 Essential Bootstrap Tools for Web Designers

12 Essential Bootstrap Tools for Web Designers Posted by vikas on June 6, 2014, filed in: Tools, Web Design 原文地址:http://designzum.com/2014/06/06/12-best-bootstrap-tools-for-web-designers/Bootstrap is a great front end website development pla…