上一篇文章:
不晓得为什么掘金我发不出文章,找不到那里违规了,上一篇文章我公布到思否了:
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. 具体的装置步骤
- 下载好之后,放入到
D:\zxd\tool\neo4j-community-3.5.12-windows\neo4j-community-3.5.12\plugins
上面 - 执行
neo4j stop
,敞开 neo4j 服务 - 进入 ~/conf 上面,找到
neo4j.conf
~ 示意你的 neo4j 装置地位 - 批改
#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.*
- 输出
neo4j start
启动 neo4j 服务 - 在可视化界面,输出
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 实战
这是之前实战的是用的形式,这里说下我大抵的设计记录
需要:
- neo4j 实现插拔式配置,没有配置的状况下进行连贯不会影响程序运行
- 所有的配置都须要放在
application_setting.xml
当中 - 如果连贯 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 连贯
- 依据下面两个步骤,ssm 我的项目启动之后,会主动装载 BEAN, 装载之后,只有在具体的程序外面,拿取配置即可(具体的配置获取实现能够由本人实现)
- 依据下面的办法应用 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 我的很多前端疑难杂症就是靠这网站解决的