Je dois trouver tous les chemins les plus courts entre deux nœuds en utilisant TraversalDescription.Trouver tous les chemins les plus courts en utilisant TraversalDescription
(je ne peux pas utiliser allShortestPaths procédure Cypher() parce que je dois ajouter un peu plus tard: évaluateur spécifique Neo4J: shortest paths with specific relation types sequence constrain )
Node startNode = ...;
Node endNode = ...;
TraversalDescription td = graphDb.traversalDescription()
.breadthFirst()
.evaluator(Evaluators.endNodeIs(Evaluation.INCLUDE_AND_PRUNE,
Evaluation.EXCLUDE_AND_CONTINUE,
endNode));
for (Path path : td.traverse(startNode)) {
// only 1 path found
}
Je reçois seulement 1 chemin.
Mais si je lance la requête Cypher:
MATCH (startNode{...})
MATCH (endNode{...})
MATCH path = allShortestPaths((startNode)-[*]-(endNode))
RETURN path;
Il y a plus d'un des chemins trouvés pour la même startNode et nœud terminal. Comment configurer la TraversalDescription pour trouver tous les chemins (les plus courts)?
Merci pour le conseil. J'ai essayé d'utiliser le 'BidirectionalTraversalDescription', et j'ai même obtenu le résultat, mais j'ai souffert de problèmes de performance significatifs: http://stackoverflow.com/questions/43526585/neo4j-set-up-bidirectionaltraversaldescription-for-shortest-paths-search – Kit