Neo4j简单的样例
系统环境:
Ubuntu 04.10 x64
一:安装
下载最新版:neo4j-community-2.2.3-unix.tar.gz 解压
cd neo4j-community-2.2.3/bin
./neo4j start
启动之后。默认的webport是:7474
三:JAVA操作neo4j
以下样例演示了一个银行层级关系的样例
央行以下有四大行,四大行以下有各自的分行。各自的分行又有各自的支行
- package com.lala.neo4j;
- import org.neo4j.graphdb.Label;
- public class BankLabel implements Label
- {
- private String name;
- public BankLabel(String name)
- {
- this.name = name;
- }
- public String name()
- {
- return name;
- }
- }
- package com.lala.neo4j;
- import org.neo4j.graphdb.RelationshipType;
- public class BankRelationshipType implements RelationshipType
- {
- private String ship;
- public BankRelationshipType(String ship)
- {
- this.ship = ship;
- }
- public String name()
- {
- return ship;
- }
- }
- package com.lala.neo4j;
- import org.neo4j.graphdb.GraphDatabaseService;
- import org.neo4j.graphdb.Node;
- import org.neo4j.graphdb.Transaction;
- import org.neo4j.graphdb.factory.GraphDatabaseFactory;
- public class Neo4j
- {
- /**
- * 标签
- */
- static BankLabel top = new BankLabel("总行");
- static BankLabel sdh = new BankLabel("四大银行");
- static BankLabel fh = new BankLabel("分行");
- static BankLabel zh = new BankLabel("支行");
- /**
- * 关系
- */
- static BankRelationshipType xj = new BankRelationshipType("XJ");
- static BankRelationshipType sj = new BankRelationshipType("SJ");
- /**
- * 初始化总行和分行的关系数据
- */
- static void init1(GraphDatabaseService db)throws Exception
- {
- Node n1 = db.createNode(top);
- n1.setProperty("name", "央行");
- Node n2 = db.createNode(sdh);
- n2.setProperty("name", "农业银行");
- Node n3 = db.createNode(sdh);
- n3.setProperty("name", "工商银行");
- n1.createRelationshipTo(n2, sj);
- n2.createRelationshipTo(n1, xj);
- n1.createRelationshipTo(n3, sj);
- n3.createRelationshipTo(n1, xj);
- }
- /**
- * 初始化农业银行分行数据
- */
- static void init2(GraphDatabaseService db)throws Exception
- {
- Node n1 = db.getNodeById(1);
- Node gd = db.createNode(fh);
- gd.setProperty("name", "农业银行广东分行");
- n1.createRelationshipTo(gd, sj);
- gd.createRelationshipTo(n1, xj);
- Node hn = db.createNode(fh);
- hn.setProperty("name", "农业银行湖南分行");
- n1.createRelationshipTo(hn, sj);
- hn.createRelationshipTo(n1, xj);
- Node hb = db.createNode(fh);
- hb.setProperty("name", "农业银行湖北分行");
- n1.createRelationshipTo(hb, sj);
- hb.createRelationshipTo(n1, xj);
- Node zj = db.createNode(fh);
- zj.setProperty("name", "农业银行浙江分行");
- n1.createRelationshipTo(zj, sj);
- zj.createRelationshipTo(n1, xj);
- }
- /**
- * 初始化工商银行分行数据
- */
- static void init3(GraphDatabaseService db)throws Exception
- {
- Node n1 = db.getNodeById(2);
- Node gd = db.createNode(fh);
- gd.setProperty("name", "工商银行广东分行");
- n1.createRelationshipTo(gd, sj);
- gd.createRelationshipTo(n1, xj);
- Node hn = db.createNode(fh);
- hn.setProperty("name", "工商银行湖南分行");
- n1.createRelationshipTo(hn, sj);
- hn.createRelationshipTo(n1, xj);
- Node hb = db.createNode(fh);
- hb.setProperty("name", "工商银行湖北分行");
- n1.createRelationshipTo(hb, sj);
- hb.createRelationshipTo(n1, xj);
- }
- /**
- * 初始化农业银行广东分行以下的支行数据
- */
- static void init4(GraphDatabaseService db)throws Exception
- {
- Node n1 = db.getNodeById(3);
- Node th = db.createNode(zh);
- th.setProperty("name", "农业银行天河支行营业部");
- n1.createRelationshipTo(th, sj);
- th.createRelationshipTo(n1, xj);
- Node yt = db.createNode(zh);
- yt.setProperty("name", "农业银行燕塘支行");
- n1.createRelationshipTo(yt, sj);
- yt.createRelationshipTo(n1, xj);
- Node thb = db.createNode(zh);
- thb.setProperty("name", "农业银行天河北路支行");
- n1.createRelationshipTo(thb, sj);
- thb.createRelationshipTo(n1, xj);
- Node sp = db.createNode(zh);
- sp.setProperty("name", "农业银行石牌东路支行");
- n1.createRelationshipTo(sp, sj);
- sp.createRelationshipTo(n1, xj);
- Node hy = db.createNode(zh);
- hy.setProperty("name", "农业银行华苑支行");
- n1.createRelationshipTo(hy, sj);
- hy.createRelationshipTo(n1, xj);
- }
- /**
- * start a=node(13) MATCH (a)<-[:SJ*1..3]-(b) return a,b (往上找三级,一共四级)
- * start a=node(1) MATCH (a)-[:SJ*1..3]->(b) return a,b (往下找三级,一共四级)
- */
- public static void main(String[] args) throws Exception
- {
- GraphDatabaseService db = new GraphDatabaseFactory().newEmbeddedDatabase("/home/admin/db/neo4j");
- Transaction tx = db.beginTx();
- init1(db);
- init2(db);
- init3(db);
- init4(db);
- tx.success();
- tx.close();
- }
- }
这里数据的路径是:/home/admin/db/neo4j
cd neo4j-community-2.2.3/conf
vim neo4j-server.properties 文件。把数据库文件夹改为上面的路径,然后,重新启动neo4j
訪问
http://127.0.0.1:7474
输入默认的username/password neo4j/neo4j
然后。改动默认password
就可以查询
以下给几个查询语句
查询全部:match a return a
查询全部标签为'分行'的数据 match (a:分行) return a
start a=node(1) MATCH (a)-[:SJ*1..3]->(b) return a,b (从node id=1開始,往下找三级,一共四级)
start a=node(13) MATCH (a)<-[:SJ*1..3]-(b) return a,b (从node id=13開始。往上找三级。一共四级)
总结:neo4j非常适合保存有层级关系的数据,比方说:无限极分类
Neo4j简单的样例的更多相关文章
- Introspector(内省)简单演示样例 与 简单应用
简单演示样例: package com.asdfLeftHand.test; import java.beans.BeanDescriptor; import java.beans.BeanInfo; ...
- JBoss 系列九十六:JBoss MSC - 简介及一个简单演示样例
什么是 JBoss MSC JBoss MSC 即 JBoss Modular Service Container,是第三代 JBoss 产品 JBoss 7和WildFfly的内核,JBoss MS ...
- Thrift的安装和简单演示样例
本文仅仅是简单的解说Thrift开源框架的安装和简单使用演示样例.对于具体的解说,后面在进行阐述. Thrift简述 ...
- [hadoop系列]Pig的安装和简单演示样例
inkfish原创,请勿商业性质转载,转载请注明来源(http://blog.csdn.net/inkfish ).(来源:http://blog.csdn.net/inkfish) Pig是Yaho ...
- 一则简单演示样例看Oracle的“无私”健壮性
Oracle的强大之处就在于他能总帮助让你选择正确的运行计划,即使你给了它错误的指示. 实验: 1. 创建測试表: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZ ...
- scrapy爬虫学习系列二:scrapy简单爬虫样例学习
系列文章列表: scrapy爬虫学习系列一:scrapy爬虫环境的准备: http://www.cnblogs.com/zhaojiedi1992/p/zhaojiedi_python_00 ...
- Android中关于JNI 的学习(零)简单的样例,简单地入门
Android中JNI的作用,就是让Java可以去调用由C/C++实现的代码,为了实现这个功能.须要用到Anrdoid提供的NDK工具包,在这里不讲怎样配置了,好麻烦,配置了好久. . . 本质上,J ...
- Android通过startService播放背景音乐简单演示样例
关于startService的基本使用概述及其生命周期可參见博客<Android中startService的使用及Service生命周期>. 本文通过播放背景音乐的简单演示样例,演示sta ...
- 使用CEF(二)— 基于VS2019编写一个简单CEF样例
使用CEF(二)- 基于VS2019编写一个简单CEF样例 在这一节中,本人将会在Windows下使用VS2019创建一个空白的C++Windows Desktop Application项目,逐步进 ...
随机推荐
- jQuery实现的手风琴效果
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- rzsz安装【转】
环境:CentOS 发生情况:需要安装工具:szrz 工具进行 windows 和linux传文件 安装方式:从网上其他教程找的所以就按照如下方式操作 1. 下载软件 rzsz-3.34.tar.gz ...
- springmvc集成Freemarke配置的几点
项目结构图 废话不多说, 集成步骤: 1.web.xml spring-mvc配置 <?xml version="1.0" encoding="UTF-8&quo ...
- Python 进行 SSH 操作,实现本地与服务器的链接,进行文件的上传和下载
Python 进行 SSH 操作,实现本地与服务器的链接,进行文件的上传和下载 2018年5月26日 19:03 阅读 375 评论 7 我本地和服务器的连接一直使用的是 Xshell 5,而在与服务 ...
- svn 使用笔记(一)
检出: svn checkout http://***.***.***.*** path --username *** --password *** 更新: svn update path --f ...
- mybatis中如果存在参数不再实体中的是如何处理
<select id="queryMapByType" parameterType="int" resultType="my.geomap.VO ...
- 【C#/WPF】保存BitmapImage数据到文件中
参考: http://stackoverflow.com/questions/35804375/how-do-i-save-a-bitmapimage-from-memory-into-a-file- ...
- 关于JXL读写以及修改EXCEL文件<转>
首先引用网上的文章,谈谈JXL与POI的区别 POI为apache公司的一个子项目,主要是提供一组操作windows文档的Java API. Java Excel俗称jxl是一开放源码项目,通过它Ja ...
- [转]Eclipse下导入外部jar包的3种方式
我们在用Eclipse开发程序的时候,经常要用到第三方jar包.引入jar包不是一个小问题,由于jar包位置不清楚,而浪费时间.下面配图说明3种Eclipse引入jar包的方式. 1.最常用的普通 ...
- 将string转换成char型的一般方法
C++文件读取中: infile in: in.open("file.dat",ios::in); 这样是能够的. 可是 string a; a="file.dat&qu ...