系统环境:

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简单的样例的更多相关文章

  1. Introspector(内省)简单演示样例 与 简单应用

    简单演示样例: package com.asdfLeftHand.test; import java.beans.BeanDescriptor; import java.beans.BeanInfo; ...

  2. JBoss 系列九十六:JBoss MSC - 简介及一个简单演示样例

    什么是 JBoss MSC JBoss MSC 即 JBoss Modular Service Container,是第三代 JBoss 产品 JBoss 7和WildFfly的内核,JBoss MS ...

  3. Thrift的安装和简单演示样例

    本文仅仅是简单的解说Thrift开源框架的安装和简单使用演示样例.对于具体的解说,后面在进行阐述. Thrift简述                                           ...

  4. [hadoop系列]Pig的安装和简单演示样例

    inkfish原创,请勿商业性质转载,转载请注明来源(http://blog.csdn.net/inkfish ).(来源:http://blog.csdn.net/inkfish) Pig是Yaho ...

  5. 一则简单演示样例看Oracle的“无私”健壮性

    Oracle的强大之处就在于他能总帮助让你选择正确的运行计划,即使你给了它错误的指示. 实验: 1. 创建測试表: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZ ...

  6. scrapy爬虫学习系列二:scrapy简单爬虫样例学习

    系列文章列表: scrapy爬虫学习系列一:scrapy爬虫环境的准备:      http://www.cnblogs.com/zhaojiedi1992/p/zhaojiedi_python_00 ...

  7. Android中关于JNI 的学习(零)简单的样例,简单地入门

    Android中JNI的作用,就是让Java可以去调用由C/C++实现的代码,为了实现这个功能.须要用到Anrdoid提供的NDK工具包,在这里不讲怎样配置了,好麻烦,配置了好久. . . 本质上,J ...

  8. Android通过startService播放背景音乐简单演示样例

    关于startService的基本使用概述及其生命周期可參见博客<Android中startService的使用及Service生命周期>. 本文通过播放背景音乐的简单演示样例,演示sta ...

  9. 使用CEF(二)— 基于VS2019编写一个简单CEF样例

    使用CEF(二)- 基于VS2019编写一个简单CEF样例 在这一节中,本人将会在Windows下使用VS2019创建一个空白的C++Windows Desktop Application项目,逐步进 ...

随机推荐

  1. NAND FLASH驱动程序

    NAND FLASH是一个存储芯片那么: 这样的操作很合理"读地址A的数据,把数据B写到地址A" 问1. 原理图上NAND FLASH和S3C2440之间只有数据线,     怎么 ...

  2. js事件委托及其原理

    1,什么是事件委托:通俗的讲,事件就是onclick,onmouseover,onmouseout,等就是事件,委托呢,就是让别人来做,这个事件本来是加在某些元素上的,然而你却加到别人身上来做,完成这 ...

  3. RTX——第18章 内存管理

    以下内容转载自安富莱电子: http://forum.armfly.com/forum.php 内存管理介绍在 ANSI C 中,可以用 malloc()和 free()2 个函数动态的分配内存和释放 ...

  4. Qt学习之路2---窗口组件及窗口类型

    窗口组件: 图形用户界面由不同的窗口和窗口组件构成: Qt以组件对象的方式,构建图形用户界面. 组件的类型包括: ---容器类(父组件):用于包含其他的界面组件 ---功能类(子组件):用于实现特定的 ...

  5. 使用寄存器点亮LED——编程实战

    stm32的编程和stc89c51还是存在着很多思想上的不同的,在51单片机中,我们点亮LED灯,只用给对应IO高低电平就可以了,而stm32中,就一个简单的GPIO,我们也需要配置好几个寄存器,而且 ...

  6. Makefile学习之路——1

    编写makefile,不是一个猛子扎进去试着写一个规则并对之调试,而应该先采用面向依赖关系的思考方法勾勒出makefile要表达怎样的依赖关系,这一点尤为重要.通过不断地练习这种思考方法,才可能达到流 ...

  7. js JSON对象与字符串相互转换

    从服务器接收到数据一般是字符串的形式.如果是JSON格式的字符串,就需要先将其转换成JSON对象.JSON对象在浏览器输出为objcet,我们看不到具体的数据.所以将JSON对象转换成字符串. 下面将 ...

  8. JAVA-JSP动作元素之forward

    相关资料:<21天学通Java Web开发> 结果总结:1.用来转移用户的请求,使得用户请求的页面从一个页面跳转到另一个页面.2.跳转为服务器端跳转,所以用户的地址栏不会发生任何变化.3. ...

  9. 【Unity笔记】获得鼠标点击屏幕的位置,并转成世界坐标

    Vector3 pos = Camera.main.ScreenToWorldPoint(Input.mousePosition);

  10. 【WPF/C#】测试下载文件(图片)

    需求:界面上有一个按钮,点击后联网下载一张PNG图片,保存到本地指定路径. 重要参考: http://stackoverflow.com/questions/24797485/how-to-downl ...