Max, `.nodes()` does this, gets the `endNode()` of all paths.
Felix, that sounds awfully long, have you run some profiling on this?
On Friday, January 20, 2017 at 7:28:35 PM UTC+1, Felix Dietze wrote:
>
> Hi,
>
> I'd like to know if its possible to do a faster traversal than in this
> stored procedure.
>
> I want to return all reachable (directed) nodes from a startnode:
>
> public class ConnectedComponent {
> @Context
> public GraphDatabaseService graphDatabaseService;
>
>
> private static enum RelTypes implements RelationshipType {
> CONNECTS
> }
>
>
> @Procedure(value = "connectedComponent")
> public Stream<Visited> connectedComponent(@Name("start") Node start) {
> return graphDatabaseService.traversalDescription()
> .depthFirst()
> .relationships( RelTypes.CONNECTS, Direction.OUTGOING )
> .uniqueness( Uniqueness.RELATIONSHIP_GLOBAL )
> .traverse( start )
> .nodes().stream().map(Visited::new);
> }
>
>
> public static class Visited {
> public final Node node;
> public Visited(Node node) {
> this.node = node;
> }
> }
> }
>
>
> I call the procedure like this:
> match (n:Post {id: "3235"}) CALL connectedComponent(n) yield node return
> node;
>
>
> This takes around 3 seconds for 15k visited nodes. That's about 10x slower
> compared to a stored procedure in postgres on the same data. Any ideas?
>
>
>
> Thank you!
>
>
--
You received this message because you are subscribed to the Google Groups
"Neo4j" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.