2013-04-27 3 views
2

Comment les index automatiques doivent-ils être traités avec la nouvelle fonction d'étiquette de neo4j 2.0? Est-ce que la création d'un index automatique, par exemple "nom" dans un objet utilisateur, continue de créer un index de nom générique pour tous les objets ou existe-t-il un moyen de spécifier qu'il ne doit s'agir que d'un type/label utilisateur?comment utiliser les index automatiques avec les étiquettes neo4j 2.0

Devrait-on créer l'objet et l'index dans une transaction atomique de type cypher? L'exemple d'utilisation pourrait être un objet utilisateur avec, par exemple, un index de nom d'utilisateur insensible à la casse.

Répondre

1

Dans 2.0 étiquettes est une grande fonctionnalité. Je ne recommanderais pas l'indexation automatique. Avec l'indexation personnalisée sur une étiquette, vous pouvez obtenir une création unique d'objets. Le flux est comme Créer un index sur l'étiquette en premier, disons que 'Utilisateur' est l'étiquette pour identifier un utilisateur.

create index on :User(username) 

Maintenant vous avez un indice sur le « nom d'utilisateur » sur chaque nœud avec l'étiquette « utilisateur » Pour créer un nœud unique, vous devez avoir quelque chose à raconter sur la création. À l'heure actuelle il n'y a pas une telle chose comme

create unique (n:User {username:"tsartsaris"}) 

Mais vous pouvez utiliser

CREATE UNIQUE (b)-[:ISUSER]->(m:User {username:"tsartsaris"}) 

Cette création unique recherchera m avec l'étiquette: l'utilisateur et le nom d'utilisateur: tsartsaris, si elle n'existe pas alors ça va le créer. Si vous réexécutez le code, il renverra le noeud existant et n'en créera pas un nouveau. Si vous utilisez 2,0 m2, vous pouvez utiliser la fusion comme méthode de création d'un nœud unique.

merge (n:User {username:"tsartsaris"}) 
    RETURN n 

fusion recherchera un match dans votre graphique, si elle le juge retournera, sinon va créer le nœud et le retourner.

+0

b est juste un noeud de départ arbitraire? – MonkeyBonkey

+0

b est ce que vous voulez être en fonction de votre configuration, mais il doit être le même pour chaque fois que vous voulez créer un utilisateur unique. – SotirisTsartsaris

1

L'indexation de neo4j 2.0 sera principalement cachée. Les index peuvent être créés pour une propriété label + afin que les nœuds avec cette étiquette et cette propriété soient indexés dans cet index.

Cependant il n'y a pas encore de contraintes (comme l'unicité) à ajouter, mais il est en développement, et il n'y a pas de support pour f.ex. insensibilité à la casse. Voir plus ici http://docs.neo4j.org/chunked/preview/query-schema-index.html

Questions connexes