You might also want to use NODE_GLOBAL breadthFirst() should also be faster. How many properties are returned per node and how large are those ?
Can you try just to count them in the procedure without actually returning them? to see if it is transfer-time or computation time? I presume you have an index/constraint on :Post(id) ? On Sat, Jan 21, 2017 at 5:07 PM, Max De Marzi Jr. <[email protected]> wrote: > The traversal API returns paths. So if you are calling "nodes" on it > should be repeating nodes over and over. > I think you just need to return the endNode. > > Also there is an implementation of wcc on https://github.com/neo4j- > contrib/neo4j-apoc-procedures/blob/4cdc97c2d4e42b91e6281965e424c3 > b2624c9f99/src/main/java/apoc/algo/WeaklyConnectedComponents.java#L37 you > can take a look at. > > > On Friday, January 20, 2017 at 12:28:35 PM UTC-6, 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. > -- 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.
