2011-07-05 11 views
0

Je n'arrive pas à accéder aux bases de données créées précédemment dans la version Java intégrée de Neo4j. Ce que je voudrais faire est d'ouvrir un GraphDatabaseService, d'ajouter plusieurs millions de relations (n'utilisant pas BatchInserter, seules les transactions), puis d'arrêter la dernière transaction et la connexion. Cela ressemblerait à quelque chose comme:Neo4j Interrogation de données sur plusieurs sessions

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"); 

[ici, je entrée un très grand csv (plusieurs millions de relations), donnant aussi des indices de relations et userId]

tx.finish(); 
    graphDb.shutdown(); }} 

Ce que je dois alors être en mesure de le faire ouvre un nouveau GraphDatabaseService et accède à toutes les données que je viens d'insérer. J'ai vérifié avec la liste Neo4j et ils ont confirmé que c'est possible, mais n'ont fourni aucun détail.

Je ne veux pas recréer l'index, mais quand j'essaye de le rouvrir simplement, j'obtiens une erreur où l'index (userIds d'en haut) "ne peut pas être résolu." Idéalement, si quelqu'un avait un aperçu de ce que le deuxième ensemble de code ressemblerait, ce serait génial. Mon un non fonctionnel ressemble:

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(); 

[ou une autre requête que je veux courir]

tx.finish(); 
    graphDb.shutdown();}} 

Toute aide serait grandement appréciée!

Répondre

1

Vous devez également tx.success(); Par défaut, un tx est dans un état "rollback".

Transaction tx = graphDb.beginTx(); 
try { 
    // do your work here 
    tx.success(); 
} finally { 
    tx.finish(); 
} 
graphdb.shutdown(); 

Veuillez garder à l'esprit que votre taille tx ne doit pas dépasser environ 10k opérations. Donc s'il vous plaît lot transaction avec une telle taille de bloc.

Questions connexes