上一篇文章:

不晓得为什么掘金我发不出文章,找不到那里违规了,上一篇文章我公布到思否了:

https://segmentfault.com/a/11...

如何装置neo4j - apoc 插件

有英语浏览能力倡议参考官网文档:https://neo4j.com/developer/n...

1. 下载neo4j - apoc 插件

进入github : https://github.com/neo4j-cont...

找到和以后neo4j 匹配的版本, 我抉择3.5.0.12 的版本

这里提供我的:

链接:https://pan.baidu.com/s/1Tb7f...
提取码:bzwh

2. 具体的装置步骤

  1. 下载好之后,放入到 D:\zxd\tool\neo4j-community-3.5.12-windows\neo4j-community-3.5.12\plugins 上面
  2. 执行neo4j stop,敞开neo4j 服务
  3. 进入 ~/conf 上面,找到neo4j.conf ~示意你的neo4j 装置地位
  4. 批改#dbms.security.procedures.whitelist=apoc.coll.*,apoc.load.* 在这一行的上面减少dbms.security.procedures.unrestricted=apoc.*的配置,装置apoc插件
上面的图看起来就像这样:

\#dbms.security.procedures.whitelist=apoc.coll.,apoc.load.
dbms.security.procedures.unrestricted=apoc.*

  1. 输出 neo4j start 启动neo4j 服务
  2. 在可视化界面,输出return apoc.version() ,如果报错阐明没装置对,显示如下页面,证实apoc 插件装置胜利

Neo4j 集成到java外面

1. 配置maven,退出依赖

<!-- neo4j 依赖包 --><dependency>    <groupId>org.neo4j.driver</groupId>    <artifactId>neo4j-java-driver</artifactId>    <version>1.5.0</version></dependency>

2. 应用neo4j 集成java实战

这是之前实战的是用的形式,这里说下我大抵的设计记录

需要:

  1. neo4j 实现插拔式配置,没有配置的状况下进行连贯不会影响程序运行
  2. 所有的配置都须要放在application_setting.xml当中
  3. 如果连贯neo4j 失败,不做解决
形象接口

core 包外面, 设计专用凋谢接口。

    /**     * 构建neo4j url地址     * @return     */    String buildUrl();    /**     * 构建neo4j 用户名     * @return     */    String buildUsername();    /**     * 构建neo4j 明码     * @return     */    String buildPassword();    /**     * 构建neo4j 配置, 目前应用默认 配置     * @return     */    Config buildConfig();    /**     * 是否开启自定义配置     * @return     */    boolean enableCustomConfig();    /**     * 构建 Neo4j csv同步地址的前置     * 默认为 file:///     *     * @return     */    String buildCvsPrefix();    /**     * 构建 neo4j csv同步的一般标签文件名     * @return     */    String buildNormalTagSyncFileName();    /**     * 构建 neo4j csv同步的业务标签文件名     * @return     */    String buildBusinessTagSyncFileName();    /**     * 构建 neo4j csv同步的用户标签文件名     * @return     */    String buildUserTagSyncFileName();    /**     * 一般标签和业务标签的关联csv文件名称     * @return     */    String buildNormalTagBizSyncFileName();    /**     * 一般标签和用户标签的关联csv文件名称     * @return     */    String buildNormalTagUserSyncFileName();    /**     * 业务标签和用户标签的关联csv文件名称     * @return     */    String buildBizTagUserSyncFileName();    /**     * 主题分类(业务)标签子父关联csv文件名称     * @return     */    String buildBizChildSyncFileName();    /**     * 一般标签标签子父关联csv文件名称     * TODO: 目前一般标签没有子父关联关系,后续须要拓展请凋谢此接口 by zhaoxudong     * @return     *///    String buildNormalChildSyncFileName();    /**     * 用户标签的子父关联csv文件名称     * @return     */    String buildUserChildSyncFileName();
具体实现

maven的其余我的项目工程,只有实现了下面的接口,就能够依据本人的设定去设置如何读取配置,上面给出案例

@Override    public String buildUrl() {        return Setter.getString("neo4j.address");    }    @Override    public String buildUsername() {        return Setter.getString("neo4j.username");    }    @Override    public String buildPassword() {        return Setter.getString("neo4j.password");    }    @Override    public Config buildConfig() {        return Config.defaultConfig();    }    @Override    public boolean enableCustomConfig() {        return Setter.getBoolean("neo4j.enablecustomconfig");    }    @Override    public String buildCvsPrefix() {        return Setter.getString("neo4j.datasyncprefix");    }    @Override    public String buildNormalTagSyncFileName() {        return Setter.getString("neo4j.normaltagsyncfilename");    }    @Override    public String buildBusinessTagSyncFileName() {        return Setter.getString("neo4j.businesstagsyncfilename");    }    @Override    public String buildUserTagSyncFileName() {        return Setter.getString("neo4j.usertagsyncfilename");    }    @Override    public String buildNormalTagBizSyncFileName() {        return Setter.getString("neo4j.normalbizsyncfilename");    }    @Override    public String buildNormalTagUserSyncFileName() {        return Setter.getString("neo4j.normalusersyncfilename");    }    @Override    public String buildBizTagUserSyncFileName() {        return Setter.getString("neo4j.bizusersyncfilename");    }    @Override    public String buildBizChildSyncFileName() {        return Setter.getString("neo4j.bizrelsyncfilename");    }    @Override    public String buildUserChildSyncFileName() {        return Setter.getString("neo4j.userrelsyncfilename");    }
联合到neo4j 连贯
  1. 依据下面两个步骤, ssm我的项目启动之后,会主动装载BEAN, 装载之后,只有在具体的程序外面,拿取配置即可(具体的配置获取实现能够由本人实现)
  2. 依据下面的办法应用java拿到xml配置之后,就实现了上面的形式实现neo4j 的数据连贯
/**     * 连贯图数据库     * @return     */private void createDriver(Neo4jConfigBuilder builder) {    if(driver == null){        try{            driver =  GraphDatabase.driver(builder.buildUrl(), AuthTokens.basic(builder.buildUsername(), builder.buildPassword()));        }catch(Exception e){            driver = null;            LOGGER.debug("无奈建设图数据库连贯,请查看图Neo4j 服务是否启动");            throw new RuntimeException("无奈建设图数据库连贯,请查看图Neo4j 服务是否启动");        }    }}
具体开发
 /**     * 执行增加cql     *     * @param cql 查问语句     */    @Override    public StatementResult run(Neo4jConfigBuilder builder,String cql) {        createDriver(builder);        Session session = driver.session();        StatementResult run = null;        try {            run = session.run(cql);        }catch (Exception e){            e.printStackTrace();        } finally {            if(session!=null){                session.close();            }        }        return run;    }    @Override    public StatementResult run(Neo4jConfigBuilder builder,String cql, Object... objects) {        createDriver(builder);        Session session = driver.session();        StatementResult run = null;        try {            run = session.run(cql, Values.parameters(objects));        }catch (Exception e){            e.printStackTrace();        } finally {            if(session!=null){                session.close();            }        }        return run;    }

已经开发的时候查找的一些博客记录:

NEO4J的装置配置及应用总结

neo4j︱neo4j批量导入neo4j-import (五)

neo4j - 查问效率的几种优化思路

Neo4j如何对大量数据(千万节点及以上)进行初始化

对于Neo4j和Cypher批量更新和批量插入优化的5个倡议

Neo4j的查问速度为何这么慢?这能商用吗?

Neo4j清空所有数据

Neo4j装置APOC和图算法Neo.ClientError.Procedure.ProcedureRegistrationFailed?

官方网站对于Apoc插件的介绍

neo4j cypher 语言的语法(十分十分重要):

neo4j--Cypher语法练习(START、CREATE、MERGE)

Neo4j中应用Cypher进行大批量节点删除的优化

thinbug 我的很多前端疑难杂症就是靠这网站解决的