2017-07-10 2 views
0

J'ai une requête à Neo4j par Py2neo v3 à l'aide ogm:Py2neo retour chemin recherche V3 illisible

output = graph.run ("MATCH (m: colonne {nom: 'code'}), (n: Colonne {name: 'locale_language_cd'}), p = shortestPath ((m) -. [NER: PART_OF *] - (n)) RETOUR p ") évaluer()

impression (sortie)

Cette correctement fait ce que je le veux, mais les nœuds ne sont pas lisibles

(f0b4322) - [: -] -> (f86202d) < - [: PART_OF] - (a16fb7b) - [: PART_OF] -> (b35 62af) < - [: PART_OF] - (a7bfe43)

Si je lance à nouveau le code:

(b539883) - [: PART_OF] -> (c83d89b) < - [: PART_OF] - (f2adac1) - [: PART_OF] -> (fd469a6) < - [: PART_OF] - (e373bf4)

Voici un lien vers ce que les données ressemble à Neo4j: Neo4j output with same search parameters

Chaque fois que je lance le code des sorties sont différents, je voudrais que les chiffres soient remplacés par les noms GraphObject (leur clé primaire).

Répondre

0

Puisque vous recherchez uniquement des nœuds correspondant à name = code, et name = 'locale_language_cd', imaginez que vous choisissez une pomme au hasard parmi un très grand sac de pommes .. apple .. mmmm ...

Chaque fois que vous atteignez, vous obtenez une pomme différente.
Même chose avec le chemin. Vous ne demandez pas le «shortestPath» ou quoi que ce soit. Vous demandez effectivement à la base de données de choisir le «premier chemin que vous trouvez» entre n & & m.

Si vous souhaitez obtenir des résultats plus cohérents, recherche par clé primaire de chaque noeud, ou trier par un autre attribut et choisir la « première » disponible ..

Pour répondre à la deuxième question, au lieu d'imprimer le résultat set, qui est un objet 'path', retourne et imprime les noeuds. OU, utilisez les fonctions intégrées pour itérer vos résultats.

quelque chose comme:

for x in results: 
    p = x['p'] # This is the path 
    print p 

Pour voir ce qui est en p

+0

Merci pour la réponse, mais comment faire une recherche par clé primaire? J'ai défini que l'attribut __primarykey__ est la propriété name. Cela ne signifie-t-il pas que je cherche déjà par clé primaire? –

+0

oui! Vous recherchez déjà par la propriété de nom. (m: Column {name: 'code'}) ... mais vous retournez p .. où p est le chemin. Peut-être que je manque l'intention de votre question. – chrisfauerbach