diff --git a/dsRes/Doc/Neo4j安装配置.txt b/dsRes/Doc/Neo4j安装配置.txt new file mode 100644 index 00000000..17613f92 --- /dev/null +++ b/dsRes/Doc/Neo4j安装配置.txt @@ -0,0 +1,30 @@ +# Neo4J下载安装 +https://blog.csdn.net/weixin_44455665/article/details/141463014 + +解压缩到:D:\neo4j-community-5.26.2\bin +# 安装服务 +cd D:\neo4j-community-5.26.2\bin +neo4j windows-service install +neo4j start + +打开 conf/neo4j.conf 文件,修改以下配置: +# 允许远程连接 +server.default_listen_address=0.0.0.0 + +# 访问 +http://10.10.21.20:7474 +neo4j +DsideaL4r5t6y7u + +密码默认:neo4j + +# 停止服务 +neo4j stop +neo4j windows-service uninstall + + +# 通过python操作neo4j +https://blog.csdn.net/sinat_20471177/article/details/134056788 + +# 提示词 +生成小学数学的所有知识点和能力点,我需要保存到cypher的脚本,如果过多无法一次性输出就只输出两个年级或三个年级的,我再追问后返回其余部分 diff --git a/dsRes/Doc/连接Neo4j.txt b/dsRes/Doc/连接Neo4j.txt deleted file mode 100644 index 924a4a4f..00000000 --- a/dsRes/Doc/连接Neo4j.txt +++ /dev/null @@ -1,3 +0,0 @@ -http://10.10.21.20:7474 -neo4j -DsideaL4r5t6y7u \ No newline at end of file diff --git a/dsRes/src/main/java/com/dsideal/Res/Neo4jDemoController.java b/dsRes/src/main/java/com/dsideal/Res/Neo4j/Controller/Neo4jDemoController.java similarity index 92% rename from dsRes/src/main/java/com/dsideal/Res/Neo4jDemoController.java rename to dsRes/src/main/java/com/dsideal/Res/Neo4j/Controller/Neo4jDemoController.java index a42c017d..6a58288a 100644 --- a/dsRes/src/main/java/com/dsideal/Res/Neo4jDemoController.java +++ b/dsRes/src/main/java/com/dsideal/Res/Neo4j/Controller/Neo4jDemoController.java @@ -1,4 +1,4 @@ -package com.dsideal.Res; +package com.dsideal.Res.Neo4j.Controller; import com.dsideal.Res.Plugin.Neo4jPlugin; import com.jfinal.core.Controller; diff --git a/dsRes/src/main/java/com/dsideal/Res/Plugin/Neo4jPlugin.java b/dsRes/src/main/java/com/dsideal/Res/Plugin/Neo4jPlugin.java index 39ee6468..99c932da 100644 --- a/dsRes/src/main/java/com/dsideal/Res/Plugin/Neo4jPlugin.java +++ b/dsRes/src/main/java/com/dsideal/Res/Plugin/Neo4jPlugin.java @@ -1,14 +1,14 @@ package com.dsideal.Res.Plugin; import lombok.Getter; -import org.neo4j.driver.AuthTokens; -import org.neo4j.driver.Driver; -import org.neo4j.driver.GraphDatabase; - -import org.neo4j.driver.Session; +import org.neo4j.driver.*; +import org.neo4j.driver.async.AsyncSession; +import org.neo4j.driver.Config; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import java.util.concurrent.TimeUnit; + @Getter public class Neo4jPlugin { private static Neo4jPlugin instance; @@ -26,11 +26,23 @@ public class Neo4jPlugin { public void init(String uri, String user, String password) { try { - driver = GraphDatabase.driver(uri, AuthTokens.basic(user, password)); + // 配置连接池 + Config config = Config.builder() + .withMaxConnectionLifetime(30, TimeUnit.MINUTES) // 连接最大生命周期 + .withMaxConnectionPoolSize(50) // 连接池最大连接数 + .withConnectionAcquisitionTimeout(5, TimeUnit.SECONDS) // 获取连接超时时间 + .withConnectionTimeout(5, TimeUnit.SECONDS) // 连接超时时间 + .withMaxTransactionRetryTime(15, TimeUnit.SECONDS) // 事务重试最大时间 + .withFetchSize(1000) // 每次查询的默认获取数量 + .build(); + + // 创建带连接池配置的驱动实例 + driver = GraphDatabase.driver(uri, AuthTokens.basic(user, password), config); + // 验证连接 try (Session session = driver.session()) { session.run("RETURN 1").consume(); - logger.info("Neo4j连接成功"); + logger.info("Neo4j连接池初始化成功"); } } catch (Exception e) { logger.error("Neo4j初始化失败: " + e.getMessage(), e); @@ -38,6 +50,23 @@ public class Neo4jPlugin { } } + public Session getSession() { + if (driver == null) { + throw new IllegalStateException("Neo4j驱动未初始化"); + } + return driver.session(SessionConfig.builder() + .withDefaultAccessMode(AccessMode.WRITE) // 默认访问模式 + .withDatabase("neo4j") // 指定数据库名称 + .build()); + } + + public AsyncSession getAsyncSession() { + if (driver == null) { + throw new IllegalStateException("Neo4j驱动未初始化"); + } + return driver.session(AsyncSession.class); + } + public void close() { if (driver != null) { driver.close(); diff --git a/dsRes/src/main/java/com/dsideal/Res/ResApplication.java b/dsRes/src/main/java/com/dsideal/Res/ResApplication.java index 21406f97..2d1110ae 100644 --- a/dsRes/src/main/java/com/dsideal/Res/ResApplication.java +++ b/dsRes/src/main/java/com/dsideal/Res/ResApplication.java @@ -6,6 +6,7 @@ import com.dsideal.Res.Base.Controller.BaseController; import com.dsideal.Res.Index.IndexController; import com.dsideal.Res.Interceptor.*; import com.dsideal.Res.Model._MappingKit; +import com.dsideal.Res.Neo4j.Controller.Neo4jDemoController; import com.dsideal.Res.Plugin.Neo4jPlugin; import com.dsideal.Res.Res.Controller.ResourceController; import com.dsideal.Res.Util.LogBackLogFactory; @@ -50,8 +51,7 @@ public class ResApplication extends JFinalConfig { me.add("/base", BaseController.class); //资源管理 me.add("/res", ResourceController.class); - - //Neo4j配置 + //Neo4j测试 me.add("/neo4j", Neo4jDemoController.class); }