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

  • 相关阅读:
    推荐系统 蒋凡译 第一章 引言 读书笔记
    神经网络与深度学习 邱锡鹏 第5章 卷积神经网络 读书笔记
    神经网络与深度学习 邱锡鹏 第4章 前馈神经网络 读书笔记
    神经网络与深度学习 邱锡鹏 第3章 线性模型 读书笔记
    神经网络与深度学习 邱锡鹏 第2章 机器学习概述 读书笔记
    神经网络与深度学习 邱锡鹏 第1章 绪论 作业
    神经网络与深度学习 邱锡鹏 第1章 绪论 读书笔记
    算法笔记 上机训练实战指南 第13章 专题扩展 学习笔记
    算法笔记 第13章 专题扩展 学习笔记
    算法笔记 上机训练实战指南 第11章 提高篇(5)--动态规划专题 学习笔记
  • 原文地址:https://www.cnblogs.com/blfbuaa/p/7353515.html
Copyright © 2011-2022 走看看