54 votes

Identifiant de noeud dans neo4j

Je suis nouveau sur Neo4j - juste commencé à jouer avec elle hier soir.

Je suis de l'avis de tous les nœuds sont identifiés par un auto-incrémenté entier qui est généré lors de la création d'un nœud - est-ce toujours le cas?

Mon jeu de données naturelles clés de chaîne donc j'aimerais éviter d'avoir à la carte entre le Neo4j attribué id et mon propre. Est-il possible d'utiliser des identificateurs de chaîne à la place?

68voto

Michael Hunger Points 16906

Pensez à le node-id comme un détail de l'implémentation (comme le rowid de bases de données relationnelles, peut être utilisé pour identifier les nœuds, mais ne doit pas être invoqué pour ne jamais être réutilisé).

Vous ajoutez votre des clés naturelles comme des propriétés du nœud, puis l'indice de nœuds avec la clé naturelle (ou activer la fonction d'auto-indexation pour eux).

E..g dans l'API Java:

Index<Node> idIndex = db.index().forNodes("identifiers");

Node n = db.createNode();
n.setProperty("id", "my-natural-key");
idIndex.add(n, "id",n.getProperty("id"));

// later
Node n = idIndex.get("id","my-natural-key").getSingle(); // node or null

Avec l'auto-indexation vous devez activer l'auto-indexation pour votre champ "id".

// via configuration 
GraphDatabaseService db = new EmbeddedGraphDatabase("path/to/db",
 MapUtils.stringMap( 
    Config.NODE_KEYS_INDEXABLE, "id", Config.NODE_AUTO_INDEXING, "true" ));

// programmatic (not persistent)
db.index().getNodeAutoIndexer().startAutoIndexingProperty( "id" );

// Nodes with property "id" will be automatically indexed at tx-commit
Node n = db.createNode();
n.setProperty("id", "my-natural-key");

// Usage
ReadableIndex<Node> autoIndex = db.index().getNodeAutoIndexer().getAutoIndex();
Node n = autoIndex.get("id","my-natural-key").getSingle();

Voir: http://docs.neo4j.org/chunked/milestone/auto-indexing.html Et: http://docs.neo4j.org/chunked/milestone/indexing.html

0voto

pata Points 1

Cela devrait vous aider:

Créer l'index à l'arrière de l'indexation automatique lors de l'importation du lot Nous savoir que si l'indexation automatique est activée dans neo4j.propriétés, chaque nœud créé sera ajouté à un index nommé node_auto_index. Maintenant, voici la cool bits. Si l'on ajoute le manuel original de l'index (à l'époque de l'importation du lot) et nommez-le comme node_auto_index et activer la fonction d'auto indexation dans neo4j, puis le lot-insérés les nœuds apparaissent comme si auto-indexation. Et à partir de là, chaque fois que vous créez un nœud, le nœud seront indexés.** *

Source : l'Identification des nœuds Personnalisée avec des Touches de

-3voto

yoga anand Points 1

parfois, l' ".getSingle()" ne fonctionne pas parfaitement. C'est quand le serveur est souvent allumé et éteint ce problème se produit. Va pour Itérateur fonctionne mieux.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X