I had written up my problem here too: http://assimilationsystems.com/2016/07/03/assimilation-subgraph-queries/
Here's a thought which occurred to me while sleeping last night... The two ways I've done it are: 1. shortest paths from initial node set 2. all paths As noted in the original email thread below, the problems I ran into are: 1. Shortest paths produces all nodes, but misses some relationships I care about. 2. All paths produces all nodes and relationships but takes a really long time and often times out. A way which occurred to me while sleeping tonight was to create a 2-step query like this: Compute the set of shortest paths to get the set of nodes (as in (1) above). Ignore the relationships produced. >From that set of nodes (n) compute (n)-[:a|b|c|d]-(n) and return 'n', relationships. If Cypher won't let me compute from 'n' to 'n', then compute the from n-[:a|b|c|d]-m WHERE m.nodetype is in the same set of node types as was in the original constraint. Then return n, relationships. [Although it's obvious, I'll mention that the difference is that the second query only follows a single level of relationship]. It still might need a little experimentation... Any thoughts? I'm going back to bed now. Will look into it some more in the morning... ;-) On 07/21/2016 02:09 PM, Alan Robertson wrote: > On 04/28/2016 03:32 PM, Alan Robertson wrote: >> The query isn't quite right. It has an error in it (variable n >> already used) and something about the order of operations causes it >> to return more than one row - with duplicates ;-) >> >> But this one seems to do the trick: >> |match path = shortestPath( (n)-[*]->(m) ) return collect(distinct >> unwind(nodes(path))), collect(distinct unwind(rels(path)))| > That query is quite fast -- but... > > I don't actually want /only/ the shortest paths, I want all the paths > that involve those relationships. > > But if I delete the shortestPath() function call it runs so long I get > an HTTP timeout on many of these queries. I restrict the types of > relationships with [:rel1type|:rel2type|:etctype*]. And even though > the result only includes one or two additional paths, it runs like 100 > times slower - and often just times out via REST (via Py2neo). > > That's really disappointing. > > Does anyone have a suggestion on how to make this faster - or at least > not time out? > -- Alan Robertson / CTO al...@assimilationsystems.com <mailto:al...@assimilationsystems.com>/ +1 303.947.7999 Assimilation Systems Limited http://AssimilationSystems.com Twitter <https://twitter.com/ossalanr> Linkedin <https://www.linkedin.com/in/alanr> skype <https://htmlsig.com/skype?username=alanr_unix.sh> -- 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 neo4j+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.