使用现有的neo4j图形数据库进行查询,而不是每次都创建一个新的数据库(相同)

时间:2013-06-26 14:25:17

标签: neo4j

我已经从一堆30k xml文件中创建了一个图形数据库。我想重用这个图数据库来查询它。目前,每次我必须从中查询内容时,我都会创建图形数据库。由于数据集很大,因此数据库创建大约需要。 40分钟我不知道重用现有数据库的方法,而不是每次都创建它。如果你能告诉我怎么做,我将非常感谢你的帮助。 (Java语言,IDE-> IntelliJ,Redhat Linux)。

4 个答案:

答案 0 :(得分:0)

我是新手,但我看到几个代码中有一个Delete数据库方法。也许这就是你的情况。尝试注释掉删除数据库方法o删除ir,只使用启动和关闭。

我试图了解每次运行Java代码时如何使用数据库而无需启动和关闭,也许使用api REST。我还没有回答,但我还在搜索。

答案 1 :(得分:0)

首先,您应确保导入逻辑和查询逻辑不在同一代码上,并且可以在没有其他代码的情况下调用。

您创建的数据库存储在目录中。

  • 如果您处于服务器模式,则会在配置文件中指定:neo4j-server.properties(查找org.neo4j.server.database.location)。
  • 如果您处于嵌入模式,则将数据库的路径声明为图形工厂:

    graphDb = new GraphDatabaseFactory()。newEmbeddedDatabase(PATH / TO / NEO.DB);

答案 2 :(得分:0)

重用是什么意思?如果要同时使用多个客户端的数据库,请使用Neo4j Server和REST,请参阅http://docs.neo4j.org/chunked/snapshot/rest-api.html并将服务器指向conf / neo4j-server.properties中的数据库目录。

此外,您可以将Neo4j的新实例指向同一个数据库目录,并以此方式打开您创建的数据库(仅限于此),请参阅https://github.com/neo4j/neo4j/blob/master/community/embedded-examples/src/main/java/org/neo4j/examples/EmbeddedNeo4j.java#L35

这是否涵盖了您的用例?

/彼得

答案 3 :(得分:0)

我遇到了同样的问题,这是由于来自code snippetsNeo4j documentation的草率复制粘贴造成的。每次运行代码时,都会删除以前创建的所有节点。

除了删除removeData - 方法(如Jose所述)之外,您还应删除createDb() - 方法中的以下行以防止此情况:

FileUtils.deleteRecursively( new File( DB_PATH ) );

即使主题已经过时,也许这对任何人都有帮助。