zoukankan      html  css  js  c++  java
  • 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非常适合保存有层级关系的数据,比方说:无限极分类

  • 相关阅读:
    c#Enum的用法
    毕业一年小结
    Js正则表达式学习之test和compile的简单介绍
    kiss框架学习
    我对我自己的认识
    支付宝接入原理
    datarow用linq查询
    asp.net 下载任意格式文件 上传文件后台代码
    hash
    深入了解Erlang 垃圾回收机制以及其重要性(转)
  • 原文地址:https://www.cnblogs.com/blfbuaa/p/7353515.html
Copyright © 2011-2022 走看看