我无法访问嵌入式Java版Neo4j中以前创建的数据库。我想做的是打开GraphDatabaseService,添加几百万个关系(不使用BatchInserter,只有事务),然后关闭最后一个事务和连接。这看起来像是:
public class startNeo4j{ …
public static void main (String[] args) {
GraphDatabaseService graphDb = new EmbeddedGraphDatabase( "data/test/base" );
Transaction tx = graphDb.beginTx();
IndexManager index = graphDb.index();
Index<Node> userIds = index.forNodes("userIds");
RelationshipIndex follows = index.forRelationships("follows");
[这里我输入了一个非常大的csv(几百万个关系),同时给出了关系和userId索引]
tx.finish();
graphDb.shutdown(); }}
我需要做的是打开一个新的GraphDatabaseService并访问我刚刚插入的所有数据。我检查了Neo4j列表,他们已经确认这是可能的,但没有提供任何细节。
我不想重新创建索引,但是当我尝试简单地重新打开它时,我得到一个错误,其中索引(上面的userIds)“无法解析”。理想情况下,如果有人概述了第二组代码看起来会是什么样的话。我的非功能性看起来像:
public class examineNeo4j{
public static void main (String[] args){
GraphDatabaseService graphDb = new EmbeddedGraphDatabase( "data/test/base" );
Transaction tx = graphDb.beginTx();
IndexHits<Node> hits_final = userIds.get("userId","12");
Node testthis = hits_final.getSingle();
[或我想要运行的其他一些查询]
tx.finish();
graphDb.shutdown();}}
非常感谢任何帮助!
答案 0 :(得分:1)
你还必须做tx.success();默认情况下,tx处于“回滚”状态。
Transaction tx = graphDb.beginTx();
try {
// do your work here
tx.success();
} finally {
tx.finish();
}
graphdb.shutdown();
请记住,您的tx大小不应超过大约10k的操作。所以请批量处理这样的块大小。