neo4j学习


[TOC]

neo4j下载和相关问题

由于目前学习到知识图谱方面,neo4j也是一个经常会用到的工具,所以今天来进行稍微的学习一下,也算是作为今天的记录吧,首先是软件的安装,我下载的是neo4j Desktop

需要注意的是,你的java版本需要很高,我是从这次升级到了17,卸载也是挺麻烦的,从网上找个教程卸载吧,

首先是从系统的卸载页面把两个和Java有关的卸载了,然后最重要的是环境变量的删除,系统变量环境变量这种

然后是删除系统文件夹中的JAVA,c盘中的Oracle和Sun文件夹,查看C:Program Files或C:Program Files (x86)下是否有相关的文件夹;最后检验cmd这种,我是没有删除注册表这种东西。

重要的是,如果你重复卸载之后可能会出现红色的感叹号!

这种你需要解决的就是去c盘的neo4j desktop 文件夹中删除掉之前建立的project就可以。

neo4j基础学习

CREATE (:个人 {性别: '男', 体检年龄:43 , 丙氨酸氨基转移酶: 正常, 天门冬氨酸氨基转移酶: 正常, γ-谷氨酰基转移酶: 正常, 总胆红素: 过高, 尿酸: 正常, 总胆固醇: 正常, 甘油三酯: 正常, 腰围: 正常, 体重指数: 正常, 是否有糖尿病: 否, 高密度脂蛋白胆固醇: 正常})

1.基本的增删改查

插入节点。插入一个Person类别的节点,且这个节点有一个属性name,属性值为Andres

CREATE (n:Person {name : 'suoshi'});

插入边。插入一条a到b的有向边,且边的类别为Follow

MATCH (a:Person),(b:Person)
WHERE a.name = 'Node A' AND b.name = 'Node B'
CREATE (a)-[r:Follow]->(b);

删除节点

MATCH (n:Person { name:'Taylor' })
DETACH DELETE n;

更新节点。更新一个Person类别的节点,设置新的name。

MATCH (n:Person { name: 'Andres' })
SET n.name = 'Taylor';

全部删除关系和节点

MATCH(r)
DETACH DELETE r

删除边

MATCH (a:Person)-[r:Follow]->(b:Person)
WHERE a.name = 'Node A' AND b.name = 'Node B'
DELETE r;

查询

MATCH (tom {name: "Tom Hanks"}) RETURN tom
MATCH (people:Person) RETURN people.name LIMIT 10
MATCH (nineties:Movie) WHERE nineties.released >= 1990 AND nineties.released < 2000 RETURN nineties.title

查询最短路径

MATCH (ms:Person { name:'Node A' }),(cs:Person { name:'Node B' }), p = shortestPath((ms)-[r:Follow]-(cs)) RETURN p;

查询两个节点之间的关系

MATCH (a:Person { name:'Node A' })-[r]->(b:Person { name:'Node B' })
RETURN type(r);

查询一个节点的所有Follower

MATCH (:Person { name:'Taylor' })-[r:Follow]->(Person)
RETURN Person.name;

2.可以通过调用JAVA来进行使用

其实在网络上有着 springboot + neo4j的组合,我之后肯定会建一个这样的可视化系统来进行展示。

Neo4j Java Driver

When using Maven, add this to your pom.xml file:

<groupId>org.neo4j.driver</groupId>
<artifactId>neo4j-java-driver</artifactId>
<version>???</version>

对于其他的构建系统来说

import org.neo4j.driver.AuthTokens;
import org.neo4j.driver.Driver;
import org.neo4j.driver.GraphDatabase;
import org.neo4j.driver.Query;

import static org.neo4j.driver.Values.parameters;

public class HelloWorldExample implements AutoCloseable {
    private final Driver driver;

    public HelloWorldExample(String uri, String user, String password) {
        driver = GraphDatabase.driver(uri, AuthTokens.basic(user, password));
    }

    @Override
    public void close() throws RuntimeException {
        driver.close();
    }

    public void printGreeting(final String message) {
        try (var session = driver.session()) {
            var greeting = session.executeWrite(tx -> {
                var query = new Query("CREATE (a:Greeting) SET a.message = $message RETURN a.message + ', from node ' + id(a)", parameters("message", message));
                var result = tx.run(query);
                return result.single().get(0).asString();
            });
            System.out.println(greeting);
        }
    }

    public static void main(String... args) {
        try (var greeter = new HelloWorldExample("bolt://localhost:7687", "neo4j", "password")) {
            greeter.printGreeting("hello, world");
        }
    }
}

下次再构建吧 可以学习的页面


文章作者: 索冀峰
文章链接: http://suojifeng.xyz
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 索冀峰 !
  目录