Re: [Neo4j] Getting sorted results from a traversal
Hi Pere, To sort you need to have all your results. Thus, in Gremlin (and hopefully you can do the mapping to the core Neo4j traverser framework), results = [] g.v(1).out('friend').out('likes') results // what my friends like results.sort{a,b - a.name = b.name} // sort resultant vertices by name In short, once you have the result of your traversal, you can then apply a comparator to the Collection to sort it as you please --- its just Java comparators. See ya, Marko. http://markorodriguez.com On Jul 15, 2011, at 8:06 AM, Pere Urbon Bayes wrote: HI! I am on the situation of having to traverse neo4j, and then expect the resultset returned to be ordered in a certain order. I've been researching a bit over the traversal API, but I did not find anything related to that. I really will appreciate any tip on that!! BTW I expect to be possible right?, as we have in relational the ordering, or on redis, etc... /purbon -- Pere Urbon-Bayes moviepilot GmbH | Mehringdamm 33 | 10961 Berlin | Germany Telefon +49 30 616 512 -110 | Fax +49 30 616 512 -133 ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] Getting sorted results from a traversal
Hi,You basically have two options. If your result set is not too big, you can sort it in memory, though that approach may consume too much memory if the result set is very large. In that case you can use SortedTree (see: https://github.com/peterneubauer/graph-collections/tree/master/src/main/java/org/neo4j/collections/sortedtree). This allows you to layout the relationships you want to traverse in sorted order. Niels Date: Fri, 15 Jul 2011 16:06:44 +0200 From: p...@moviepilot.com To: user@lists.neo4j.org Subject: [Neo4j] Getting sorted results from a traversal HI! I am on the situation of having to traverse neo4j, and then expect the resultset returned to be ordered in a certain order. I've been researching a bit over the traversal API, but I did not find anything related to that. I really will appreciate any tip on that!! BTW I expect to be possible right?, as we have in relational the ordering, or on redis, etc... /purbon -- Pere Urbon-Bayes moviepilot GmbH | Mehringdamm 33 | 10961 Berlin | Germany Telefon +49 30 616 512 -110 | Fax +49 30 616 512 -133 ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] Getting sorted results from a traversal
Well, this is great if I want to do all the math in memory, but I expect to do the computation by the db. / purbon On 15 July 2011 16:10, Marko Rodriguez okramma...@gmail.com wrote: Hi Pere, To sort you need to have all your results. Thus, in Gremlin (and hopefully you can do the mapping to the core Neo4j traverser framework), results = [] g.v(1).out('friend').out('likes') results // what my friends like results.sort{a,b - a.name = b.name} // sort resultant vertices by name In short, once you have the result of your traversal, you can then apply a comparator to the Collection to sort it as you please --- its just Java comparators. See ya, Marko. http://markorodriguez.com On Jul 15, 2011, at 8:06 AM, Pere Urbon Bayes wrote: HI! I am on the situation of having to traverse neo4j, and then expect the resultset returned to be ordered in a certain order. I've been researching a bit over the traversal API, but I did not find anything related to that. I really will appreciate any tip on that!! BTW I expect to be possible right?, as we have in relational the ordering, or on redis, etc... /purbon -- Pere Urbon-Bayes moviepilot GmbH | Mehringdamm 33 | 10961 Berlin | Germany Telefon +49 30 616 512 -110 | Fax +49 30 616 512 -133 ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user -- Pere Urbon-Bayes moviepilot GmbH | Mehringdamm 33 | 10961 Berlin | Germany Telefon +49 30 616 512 -110 | Fax +49 30 616 512 -133 ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] Getting sorted results from a traversal
The DB would do it in memory too, wouldn't it? In the case of a complex traversal, indexes don't really apply, since the ordering and the traversal order are unrelated, so you'd generally need to sort in memory anyway. Whether you do it as you add elements to the traversed list of stuff or do it after the fact is another discussion, but I think in either case, it needs to be done after the fact. -Original Message- From: user-boun...@lists.neo4j.org [mailto:user-boun...@lists.neo4j.org] On Behalf Of Pere Urbon Bayes Sent: Friday, July 15, 2011 11:05 AM To: Neo4j user discussions Subject: Re: [Neo4j] Getting sorted results from a traversal Well, this is great if I want to do all the math in memory, but I expect to do the computation by the db. / purbon On 15 July 2011 16:10, Marko Rodriguez okramma...@gmail.com wrote: Hi Pere, To sort you need to have all your results. Thus, in Gremlin (and hopefully you can do the mapping to the core Neo4j traverser framework), results = [] g.v(1).out('friend').out('likes') results // what my friends like results.sort{a,b - a.name = b.name} // sort resultant vertices by name In short, once you have the result of your traversal, you can then apply a comparator to the Collection to sort it as you please --- its just Java comparators. See ya, Marko. http://markorodriguez.com On Jul 15, 2011, at 8:06 AM, Pere Urbon Bayes wrote: HI! I am on the situation of having to traverse neo4j, and then expect the resultset returned to be ordered in a certain order. I've been researching a bit over the traversal API, but I did not find anything related to that. I really will appreciate any tip on that!! BTW I expect to be possible right?, as we have in relational the ordering, or on redis, etc... /purbon -- Pere Urbon-Bayes moviepilot GmbH | Mehringdamm 33 | 10961 Berlin | Germany Telefon +49 30 616 512 -110 | Fax +49 30 616 512 -133 ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user -- Pere Urbon-Bayes moviepilot GmbH | Mehringdamm 33 | 10961 Berlin | Germany Telefon +49 30 616 512 -110 | Fax +49 30 616 512 -133 ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] Getting sorted results from a traversal
Hi, Ah. Then I would recommend using a persistent data structure such as the one the Neil discussed in his follow up post. Marko. http://markorodriguez.com On Jul 15, 2011, at 9:04 AM, Pere Urbon Bayes wrote: Well, this is great if I want to do all the math in memory, but I expect to do the computation by the db. / purbon On 15 July 2011 16:10, Marko Rodriguez okramma...@gmail.com wrote: Hi Pere, To sort you need to have all your results. Thus, in Gremlin (and hopefully you can do the mapping to the core Neo4j traverser framework), results = [] g.v(1).out('friend').out('likes') results // what my friends like results.sort{a,b - a.name = b.name} // sort resultant vertices by name In short, once you have the result of your traversal, you can then apply a comparator to the Collection to sort it as you please --- its just Java comparators. See ya, Marko. http://markorodriguez.com On Jul 15, 2011, at 8:06 AM, Pere Urbon Bayes wrote: HI! I am on the situation of having to traverse neo4j, and then expect the resultset returned to be ordered in a certain order. I've been researching a bit over the traversal API, but I did not find anything related to that. I really will appreciate any tip on that!! BTW I expect to be possible right?, as we have in relational the ordering, or on redis, etc... /purbon -- Pere Urbon-Bayes moviepilot GmbH | Mehringdamm 33 | 10961 Berlin | Germany Telefon +49 30 616 512 -110 | Fax +49 30 616 512 -133 ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user -- Pere Urbon-Bayes moviepilot GmbH | Mehringdamm 33 | 10961 Berlin | Germany Telefon +49 30 616 512 -110 | Fax +49 30 616 512 -133 ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] Getting sorted results from a traversal
I would think that the graph structure definitely matters, in that there may be optimizations that can be achieved via indexing/querying vs traversal and sorting (or a hybrid of the two) depending on the specifics. -Original Message- From: user-boun...@lists.neo4j.org [mailto:user-boun...@lists.neo4j.org] On Behalf Of Pere Urbon Bayes Sent: Friday, July 15, 2011 11:14 AM To: Neo4j user discussions Subject: Re: [Neo4j] Getting sorted results from a traversal Well the graph structure is not relevant here, I think. The property I expect to be sorting is on the destination node, so I can do the traversal and then expect to run the sorting. Please, tell me how the data structure can help me to deal with that order, please? / purbon On 15 July 2011 17:10, David Montag david.mon...@neotechnology.com wrote: Hi Pere, Can you elaborate on your graph structure? Thanks, David On Fri, Jul 15, 2011 at 8:04 AM, Pere Urbon Bayes p...@moviepilot.com wrote: Well, this is great if I want to do all the math in memory, but I expect to do the computation by the db. / purbon On 15 July 2011 16:10, Marko Rodriguez okramma...@gmail.com wrote: Hi Pere, To sort you need to have all your results. Thus, in Gremlin (and hopefully you can do the mapping to the core Neo4j traverser framework), results = [] g.v(1).out('friend').out('likes') results // what my friends like results.sort{a,b - a.name = b.name} // sort resultant vertices by name In short, once you have the result of your traversal, you can then apply a comparator to the Collection to sort it as you please --- its just Java comparators. See ya, Marko. http://markorodriguez.com On Jul 15, 2011, at 8:06 AM, Pere Urbon Bayes wrote: HI! I am on the situation of having to traverse neo4j, and then expect the resultset returned to be ordered in a certain order. I've been researching a bit over the traversal API, but I did not find anything related to that. I really will appreciate any tip on that!! BTW I expect to be possible right?, as we have in relational the ordering, or on redis, etc... /purbon -- Pere Urbon-Bayes moviepilot GmbH | Mehringdamm 33 | 10961 Berlin | Germany Telefon +49 30 616 512 -110 | Fax +49 30 616 512 -133 ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user -- Pere Urbon-Bayes moviepilot GmbH | Mehringdamm 33 | 10961 Berlin | Germany Telefon +49 30 616 512 -110 | Fax +49 30 616 512 -133 ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user -- David Montag david.mon...@neotechnology.com Neo Technology, www.neotechnology.com Cell: 650.556.4411 Skype: ddmontag ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user -- Pere Urbon-Bayes moviepilot GmbH | Mehringdamm 33 | 10961 Berlin | Germany Telefon +49 30 616 512 -110 | Fax +49 30 616 512 -133 ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] Getting sorted results from a traversal
Well in fact, I expect to order the resulting set of nodes by a property on that end nodes. But This class cold also help on some use cases I think. / purbon On 15 July 2011 16:43, Niels Hoogeveen pd_aficion...@hotmail.com wrote: Hi,You basically have two options. If your result set is not too big, you can sort it in memory, though that approach may consume too much memory if the result set is very large. In that case you can use SortedTree (see: https://github.com/peterneubauer/graph-collections/tree/master/src/main/java/org/neo4j/collections/sortedtree). This allows you to layout the relationships you want to traverse in sorted order. Niels Date: Fri, 15 Jul 2011 16:06:44 +0200 From: p...@moviepilot.com To: user@lists.neo4j.org Subject: [Neo4j] Getting sorted results from a traversal HI! I am on the situation of having to traverse neo4j, and then expect the resultset returned to be ordered in a certain order. I've been researching a bit over the traversal API, but I did not find anything related to that. I really will appreciate any tip on that!! BTW I expect to be possible right?, as we have in relational the ordering, or on redis, etc... /purbon -- Pere Urbon-Bayes moviepilot GmbH | Mehringdamm 33 | 10961 Berlin | Germany Telefon +49 30 616 512 -110 | Fax +49 30 616 512 -133 ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user -- Pere Urbon-Bayes moviepilot GmbH | Mehringdamm 33 | 10961 Berlin | Germany Telefon +49 30 616 512 -110 | Fax +49 30 616 512 -133 ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] Getting sorted results from a traversal
Yes the graph structure is relevant, but I am just saying I don't know how the structure can help me in this use case. All that I want is to do a traversal, and then order the expected result. It will be possible If I only use neo4j as a traversal thing, and then another system as a property store, but I think the hole neo4j should be able to deal with that, right? / purbon On 15 July 2011 17:16, Rick Bullotta rick.bullo...@thingworx.com wrote: I would think that the graph structure definitely matters, in that there may be optimizations that can be achieved via indexing/querying vs traversal and sorting (or a hybrid of the two) depending on the specifics. -Original Message- From: user-boun...@lists.neo4j.org [mailto:user-boun...@lists.neo4j.org] On Behalf Of Pere Urbon Bayes Sent: Friday, July 15, 2011 11:14 AM To: Neo4j user discussions Subject: Re: [Neo4j] Getting sorted results from a traversal Well the graph structure is not relevant here, I think. The property I expect to be sorting is on the destination node, so I can do the traversal and then expect to run the sorting. Please, tell me how the data structure can help me to deal with that order, please? / purbon On 15 July 2011 17:10, David Montag david.mon...@neotechnology.com wrote: Hi Pere, Can you elaborate on your graph structure? Thanks, David On Fri, Jul 15, 2011 at 8:04 AM, Pere Urbon Bayes p...@moviepilot.com wrote: Well, this is great if I want to do all the math in memory, but I expect to do the computation by the db. / purbon On 15 July 2011 16:10, Marko Rodriguez okramma...@gmail.com wrote: Hi Pere, To sort you need to have all your results. Thus, in Gremlin (and hopefully you can do the mapping to the core Neo4j traverser framework), results = [] g.v(1).out('friend').out('likes') results // what my friends like results.sort{a,b - a.name = b.name} // sort resultant vertices by name In short, once you have the result of your traversal, you can then apply a comparator to the Collection to sort it as you please --- its just Java comparators. See ya, Marko. http://markorodriguez.com On Jul 15, 2011, at 8:06 AM, Pere Urbon Bayes wrote: HI! I am on the situation of having to traverse neo4j, and then expect the resultset returned to be ordered in a certain order. I've been researching a bit over the traversal API, but I did not find anything related to that. I really will appreciate any tip on that!! BTW I expect to be possible right?, as we have in relational the ordering, or on redis, etc... /purbon -- Pere Urbon-Bayes moviepilot GmbH | Mehringdamm 33 | 10961 Berlin | Germany Telefon +49 30 616 512 -110 | Fax +49 30 616 512 -133 ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user -- Pere Urbon-Bayes moviepilot GmbH | Mehringdamm 33 | 10961 Berlin | Germany Telefon +49 30 616 512 -110 | Fax +49 30 616 512 -133 ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user -- David Montag david.mon...@neotechnology.com Neo Technology, www.neotechnology.com Cell: 650.556.4411 Skype: ddmontag ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user -- Pere Urbon-Bayes moviepilot GmbH | Mehringdamm 33 | 10961 Berlin | Germany Telefon +49 30 616 512 -110 | Fax +49 30 616 512 -133 ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user -- Pere Urbon-Bayes moviepilot GmbH | Mehringdamm 33 | 10961 Berlin | Germany Telefon +49 30 616 512 -110 | Fax +49 30 616 512 -133 ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] Getting sorted results from a traversal
Well, the thing is that the database can easy deal with that, as the relational system do. / purbon On 15 July 2011 17:08, Rick Bullotta rick.bullo...@thingworx.com wrote: The DB would do it in memory too, wouldn't it? In the case of a complex traversal, indexes don't really apply, since the ordering and the traversal order are unrelated, so you'd generally need to sort in memory anyway. Whether you do it as you add elements to the traversed list of stuff or do it after the fact is another discussion, but I think in either case, it needs to be done after the fact. -Original Message- From: user-boun...@lists.neo4j.org [mailto:user-boun...@lists.neo4j.org] On Behalf Of Pere Urbon Bayes Sent: Friday, July 15, 2011 11:05 AM To: Neo4j user discussions Subject: Re: [Neo4j] Getting sorted results from a traversal Well, this is great if I want to do all the math in memory, but I expect to do the computation by the db. / purbon On 15 July 2011 16:10, Marko Rodriguez okramma...@gmail.com wrote: Hi Pere, To sort you need to have all your results. Thus, in Gremlin (and hopefully you can do the mapping to the core Neo4j traverser framework), results = [] g.v(1).out('friend').out('likes') results // what my friends like results.sort{a,b - a.name = b.name} // sort resultant vertices by name In short, once you have the result of your traversal, you can then apply a comparator to the Collection to sort it as you please --- its just Java comparators. See ya, Marko. http://markorodriguez.com On Jul 15, 2011, at 8:06 AM, Pere Urbon Bayes wrote: HI! I am on the situation of having to traverse neo4j, and then expect the resultset returned to be ordered in a certain order. I've been researching a bit over the traversal API, but I did not find anything related to that. I really will appreciate any tip on that!! BTW I expect to be possible right?, as we have in relational the ordering, or on redis, etc... /purbon -- Pere Urbon-Bayes moviepilot GmbH | Mehringdamm 33 | 10961 Berlin | Germany Telefon +49 30 616 512 -110 | Fax +49 30 616 512 -133 ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user -- Pere Urbon-Bayes moviepilot GmbH | Mehringdamm 33 | 10961 Berlin | Germany Telefon +49 30 616 512 -110 | Fax +49 30 616 512 -133 ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user -- Pere Urbon-Bayes moviepilot GmbH | Mehringdamm 33 | 10961 Berlin | Germany Telefon +49 30 616 512 -110 | Fax +49 30 616 512 -133 ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] Getting sorted results from a traversal
A few questions/thoughts: - Do you have any expectation/prediction of the number of nodes satisfying the query? - Do you care about *all* results or only the top n (I ask this because in most cases, a dataset of a zillion ordered records is of little value - often only the edges have meaningful content) If the answer to the first question is a couple million or so, I would probably sort in memory. If the answer to the second question is yes, then the problem because very easy, in that you can maintain a sorted list of the top n during the traversal process fairly easily. -Original Message- From: user-boun...@lists.neo4j.org [mailto:user-boun...@lists.neo4j.org] On Behalf Of Pere Urbon Bayes Sent: Friday, July 15, 2011 11:17 AM To: Neo4j user discussions Subject: Re: [Neo4j] Getting sorted results from a traversal Well in fact, I expect to order the resulting set of nodes by a property on that end nodes. But This class cold also help on some use cases I think. / purbon On 15 July 2011 16:43, Niels Hoogeveen pd_aficion...@hotmail.com wrote: Hi,You basically have two options. If your result set is not too big, you can sort it in memory, though that approach may consume too much memory if the result set is very large. In that case you can use SortedTree (see: https://github.com/peterneubauer/graph-collections/tree/master/src/main/java/org/neo4j/collections/sortedtree). This allows you to layout the relationships you want to traverse in sorted order. Niels Date: Fri, 15 Jul 2011 16:06:44 +0200 From: p...@moviepilot.com To: user@lists.neo4j.org Subject: [Neo4j] Getting sorted results from a traversal HI! I am on the situation of having to traverse neo4j, and then expect the resultset returned to be ordered in a certain order. I've been researching a bit over the traversal API, but I did not find anything related to that. I really will appreciate any tip on that!! BTW I expect to be possible right?, as we have in relational the ordering, or on redis, etc... /purbon -- Pere Urbon-Bayes moviepilot GmbH | Mehringdamm 33 | 10961 Berlin | Germany Telefon +49 30 616 512 -110 | Fax +49 30 616 512 -133 ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user -- Pere Urbon-Bayes moviepilot GmbH | Mehringdamm 33 | 10961 Berlin | Germany Telefon +49 30 616 512 -110 | Fax +49 30 616 512 -133 ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] Getting sorted results from a traversal
You might also try to use cypher for your traversal which is able to order (also in memory of course). See the screencast I did: http://neo4j.vidcaster.com/U2Y/introduction-to-cypher/ It's even the same domain. Cheers Michael Am 15.07.2011 um 17:24 schrieb Rick Bullotta: But you couldn't easy do a complex traversal with an RDBMS. ;-) I suspect that even if you could write some magic SQL to do so, you'd almost certainly lose the benefits any optimized sorting/ordering that indices provide, so even the RDBMS would have to post-process the sort. If the traversal isn't complex or randomly deep, then Neo indexing + querying might work for you the same way an RDBMS might handle it. -Original Message- From: user-boun...@lists.neo4j.org [mailto:user-boun...@lists.neo4j.org] On Behalf Of Pere Urbon Bayes Sent: Friday, July 15, 2011 11:21 AM To: Neo4j user discussions Subject: Re: [Neo4j] Getting sorted results from a traversal Well, the thing is that the database can easy deal with that, as the relational system do. / purbon On 15 July 2011 17:08, Rick Bullotta rick.bullo...@thingworx.com wrote: The DB would do it in memory too, wouldn't it? In the case of a complex traversal, indexes don't really apply, since the ordering and the traversal order are unrelated, so you'd generally need to sort in memory anyway. Whether you do it as you add elements to the traversed list of stuff or do it after the fact is another discussion, but I think in either case, it needs to be done after the fact. -Original Message- From: user-boun...@lists.neo4j.org [mailto:user-boun...@lists.neo4j.org] On Behalf Of Pere Urbon Bayes Sent: Friday, July 15, 2011 11:05 AM To: Neo4j user discussions Subject: Re: [Neo4j] Getting sorted results from a traversal Well, this is great if I want to do all the math in memory, but I expect to do the computation by the db. / purbon On 15 July 2011 16:10, Marko Rodriguez okramma...@gmail.com wrote: Hi Pere, To sort you need to have all your results. Thus, in Gremlin (and hopefully you can do the mapping to the core Neo4j traverser framework), results = [] g.v(1).out('friend').out('likes') results // what my friends like results.sort{a,b - a.name = b.name} // sort resultant vertices by name In short, once you have the result of your traversal, you can then apply a comparator to the Collection to sort it as you please --- its just Java comparators. See ya, Marko. http://markorodriguez.com On Jul 15, 2011, at 8:06 AM, Pere Urbon Bayes wrote: HI! I am on the situation of having to traverse neo4j, and then expect the resultset returned to be ordered in a certain order. I've been researching a bit over the traversal API, but I did not find anything related to that. I really will appreciate any tip on that!! BTW I expect to be possible right?, as we have in relational the ordering, or on redis, etc... /purbon -- Pere Urbon-Bayes moviepilot GmbH | Mehringdamm 33 | 10961 Berlin | Germany Telefon +49 30 616 512 -110 | Fax +49 30 616 512 -133 ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user -- Pere Urbon-Bayes moviepilot GmbH | Mehringdamm 33 | 10961 Berlin | Germany Telefon +49 30 616 512 -110 | Fax +49 30 616 512 -133 ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user -- Pere Urbon-Bayes moviepilot GmbH | Mehringdamm 33 | 10961 Berlin | Germany Telefon +49 30 616 512 -110 | Fax +49 30 616 512 -133 ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] Getting sorted results from a traversal
Yeah! well to order in memory I can really deal with that task, for this I really don't need cypher. Don´t take it personally, I know you really want to promote your language, xD! - purbon PD: See you next graphdb meetup in Berlin! On 15 July 2011 19:37, Michael Hunger michael.hun...@neotechnology.comwrote: You might also try to use cypher for your traversal which is able to order (also in memory of course). See the screencast I did: http://neo4j.vidcaster.com/U2Y/introduction-to-cypher/ It's even the same domain. Cheers Michael Am 15.07.2011 um 17:24 schrieb Rick Bullotta: But you couldn't easy do a complex traversal with an RDBMS. ;-) I suspect that even if you could write some magic SQL to do so, you'd almost certainly lose the benefits any optimized sorting/ordering that indices provide, so even the RDBMS would have to post-process the sort. If the traversal isn't complex or randomly deep, then Neo indexing + querying might work for you the same way an RDBMS might handle it. -Original Message- From: user-boun...@lists.neo4j.org [mailto:user-boun...@lists.neo4j.org] On Behalf Of Pere Urbon Bayes Sent: Friday, July 15, 2011 11:21 AM To: Neo4j user discussions Subject: Re: [Neo4j] Getting sorted results from a traversal Well, the thing is that the database can easy deal with that, as the relational system do. / purbon On 15 July 2011 17:08, Rick Bullotta rick.bullo...@thingworx.com wrote: The DB would do it in memory too, wouldn't it? In the case of a complex traversal, indexes don't really apply, since the ordering and the traversal order are unrelated, so you'd generally need to sort in memory anyway. Whether you do it as you add elements to the traversed list of stuff or do it after the fact is another discussion, but I think in either case, it needs to be done after the fact. -Original Message- From: user-boun...@lists.neo4j.org [mailto:user-boun...@lists.neo4j.org ] On Behalf Of Pere Urbon Bayes Sent: Friday, July 15, 2011 11:05 AM To: Neo4j user discussions Subject: Re: [Neo4j] Getting sorted results from a traversal Well, this is great if I want to do all the math in memory, but I expect to do the computation by the db. / purbon On 15 July 2011 16:10, Marko Rodriguez okramma...@gmail.com wrote: Hi Pere, To sort you need to have all your results. Thus, in Gremlin (and hopefully you can do the mapping to the core Neo4j traverser framework), results = [] g.v(1).out('friend').out('likes') results // what my friends like results.sort{a,b - a.name = b.name} // sort resultant vertices by name In short, once you have the result of your traversal, you can then apply a comparator to the Collection to sort it as you please --- its just Java comparators. See ya, Marko. http://markorodriguez.com On Jul 15, 2011, at 8:06 AM, Pere Urbon Bayes wrote: HI! I am on the situation of having to traverse neo4j, and then expect the resultset returned to be ordered in a certain order. I've been researching a bit over the traversal API, but I did not find anything related to that. I really will appreciate any tip on that!! BTW I expect to be possible right?, as we have in relational the ordering, or on redis, etc... /purbon -- Pere Urbon-Bayes moviepilot GmbH | Mehringdamm 33 | 10961 Berlin | Germany Telefon +49 30 616 512 -110 | Fax +49 30 616 512 -133 ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user -- Pere Urbon-Bayes moviepilot GmbH | Mehringdamm 33 | 10961 Berlin | Germany Telefon +49 30 616 512 -110 | Fax +49 30 616 512 -133 ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user -- Pere Urbon-Bayes moviepilot GmbH | Mehringdamm 33 | 10961 Berlin | Germany Telefon +49 30 616 512 -110 | Fax +49 30 616 512 -133 ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user -- Pere Urbon-Bayes moviepilot GmbH | Mehringdamm 33 | 10961 Berlin | Germany Telefon +49 30 616 512 -110 | Fax +49 30 616 512 -133 ___ Neo4j
Re: [Neo4j] Getting sorted results from a traversal
Hi Rick, On 15 July 2011 17:24, Rick Bullotta rick.bullo...@thingworx.com wrote: But you couldn't easy do a complex traversal with an RDBMS. ;-) Yeah, so you are on me, from neo4j I could only expect to deal really good with traversals, when you need some simple thing like ordering nodes, you can not do it easily. I suspect that even if you could write some magic SQL to do so, you'd almost certainly lose the benefits any optimized sorting/ordering that indices provide, so even the RDBMS would have to post-process the sort. Well, there are two tasks involved on that, 1.- Do the traversals? ( Where neo4j simple rocks!) 2.- The post ordering? ( Where I will need something else) The thing is that with the second one I would expect something like this Traversal - Set of Nodes - Order - Set of Nodes ordered In this use case I really would like to have this feature as traversals expect to return always some kind of node set. On the oder side there are the graph maching, where you expect a full graph. Also will be interesting when dealing with edges, there we could also have something like an ordered tree https://github.com/peterneubauer/graph-collections/tree/master/src/main/java/org/neo4j/collections/sortedtree If the traversal isn't complex or randomly deep, then Neo indexing + querying might work for you the same way an RDBMS might handle it. Well, If I was able to ask the internal lucene to order the resultset from the traversal then will be find. But please teach me how you will do it, oder wise for me its just a use case neo4j can not provide me. - purbon -Original Message- From: user-boun...@lists.neo4j.org [mailto:user-boun...@lists.neo4j.org] On Behalf Of Pere Urbon Bayes Sent: Friday, July 15, 2011 11:21 AM To: Neo4j user discussions Subject: Re: [Neo4j] Getting sorted results from a traversal Well, the thing is that the database can easy deal with that, as the relational system do. / purbon On 15 July 2011 17:08, Rick Bullotta rick.bullo...@thingworx.com wrote: The DB would do it in memory too, wouldn't it? In the case of a complex traversal, indexes don't really apply, since the ordering and the traversal order are unrelated, so you'd generally need to sort in memory anyway. Whether you do it as you add elements to the traversed list of stuff or do it after the fact is another discussion, but I think in either case, it needs to be done after the fact. -Original Message- From: user-boun...@lists.neo4j.org [mailto:user-boun...@lists.neo4j.org] On Behalf Of Pere Urbon Bayes Sent: Friday, July 15, 2011 11:05 AM To: Neo4j user discussions Subject: Re: [Neo4j] Getting sorted results from a traversal Well, this is great if I want to do all the math in memory, but I expect to do the computation by the db. / purbon On 15 July 2011 16:10, Marko Rodriguez okramma...@gmail.com wrote: Hi Pere, To sort you need to have all your results. Thus, in Gremlin (and hopefully you can do the mapping to the core Neo4j traverser framework), results = [] g.v(1).out('friend').out('likes') results // what my friends like results.sort{a,b - a.name = b.name} // sort resultant vertices by name In short, once you have the result of your traversal, you can then apply a comparator to the Collection to sort it as you please --- its just Java comparators. See ya, Marko. http://markorodriguez.com On Jul 15, 2011, at 8:06 AM, Pere Urbon Bayes wrote: HI! I am on the situation of having to traverse neo4j, and then expect the resultset returned to be ordered in a certain order. I've been researching a bit over the traversal API, but I did not find anything related to that. I really will appreciate any tip on that!! BTW I expect to be possible right?, as we have in relational the ordering, or on redis, etc... /purbon -- Pere Urbon-Bayes moviepilot GmbH | Mehringdamm 33 | 10961 Berlin | Germany Telefon +49 30 616 512 -110 | Fax +49 30 616 512 -133 ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user -- Pere Urbon-Bayes moviepilot GmbH | Mehringdamm 33 | 10961 Berlin | Germany Telefon +49 30 616 512 -110 | Fax +49 30 616 512 -133 ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user -- Pere Urbon-Bayes moviepilot GmbH | Mehringdamm 33 | 10961 Berlin | Germany Telefon +49 30 616 512 -110 | Fax +49 30 616 512
Re: [Neo4j] Getting sorted results from a traversal
Hi, Pere, my last thought on this is that you might want to use something like JDBM2. http://code.google.com/p/jdbm2/ It has a Maven2 dependency if you do it that way. JDBM2 provides you some Java collection implementations that are persistent to disk... See ya, Marko. http://markorodriguez.com On Jul 15, 2011, at 12:22 PM, Pere Urbon Bayes wrote: Yeah! well to order in memory I can really deal with that task, for this I really don't need cypher. Don´t take it personally, I know you really want to promote your language, xD! - purbon PD: See you next graphdb meetup in Berlin! On 15 July 2011 19:37, Michael Hunger michael.hun...@neotechnology.comwrote: You might also try to use cypher for your traversal which is able to order (also in memory of course). See the screencast I did: http://neo4j.vidcaster.com/U2Y/introduction-to-cypher/ It's even the same domain. Cheers Michael Am 15.07.2011 um 17:24 schrieb Rick Bullotta: But you couldn't easy do a complex traversal with an RDBMS. ;-) I suspect that even if you could write some magic SQL to do so, you'd almost certainly lose the benefits any optimized sorting/ordering that indices provide, so even the RDBMS would have to post-process the sort. If the traversal isn't complex or randomly deep, then Neo indexing + querying might work for you the same way an RDBMS might handle it. -Original Message- From: user-boun...@lists.neo4j.org [mailto:user-boun...@lists.neo4j.org] On Behalf Of Pere Urbon Bayes Sent: Friday, July 15, 2011 11:21 AM To: Neo4j user discussions Subject: Re: [Neo4j] Getting sorted results from a traversal Well, the thing is that the database can easy deal with that, as the relational system do. / purbon On 15 July 2011 17:08, Rick Bullotta rick.bullo...@thingworx.com wrote: The DB would do it in memory too, wouldn't it? In the case of a complex traversal, indexes don't really apply, since the ordering and the traversal order are unrelated, so you'd generally need to sort in memory anyway. Whether you do it as you add elements to the traversed list of stuff or do it after the fact is another discussion, but I think in either case, it needs to be done after the fact. -Original Message- From: user-boun...@lists.neo4j.org [mailto:user-boun...@lists.neo4j.org ] On Behalf Of Pere Urbon Bayes Sent: Friday, July 15, 2011 11:05 AM To: Neo4j user discussions Subject: Re: [Neo4j] Getting sorted results from a traversal Well, this is great if I want to do all the math in memory, but I expect to do the computation by the db. / purbon On 15 July 2011 16:10, Marko Rodriguez okramma...@gmail.com wrote: Hi Pere, To sort you need to have all your results. Thus, in Gremlin (and hopefully you can do the mapping to the core Neo4j traverser framework), results = [] g.v(1).out('friend').out('likes') results // what my friends like results.sort{a,b - a.name = b.name} // sort resultant vertices by name In short, once you have the result of your traversal, you can then apply a comparator to the Collection to sort it as you please --- its just Java comparators. See ya, Marko. http://markorodriguez.com On Jul 15, 2011, at 8:06 AM, Pere Urbon Bayes wrote: HI! I am on the situation of having to traverse neo4j, and then expect the resultset returned to be ordered in a certain order. I've been researching a bit over the traversal API, but I did not find anything related to that. I really will appreciate any tip on that!! BTW I expect to be possible right?, as we have in relational the ordering, or on redis, etc... /purbon -- Pere Urbon-Bayes moviepilot GmbH | Mehringdamm 33 | 10961 Berlin | Germany Telefon +49 30 616 512 -110 | Fax +49 30 616 512 -133 ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user -- Pere Urbon-Bayes moviepilot GmbH | Mehringdamm 33 | 10961 Berlin | Germany Telefon +49 30 616 512 -110 | Fax +49 30 616 512 -133 ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user -- Pere Urbon-Bayes moviepilot GmbH | Mehringdamm 33 | 10961 Berlin | Germany Telefon +49 30 616 512 -110 | Fax +49 30 616 512 -133 ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] Getting sorted results from a traversal
Hey, Actually, I was just Googling and found this cool library: http://code.google.com/p/pcollections/ This way you have Set, Vector, etc. persisted. Perhaps that could help you out Pere. See ya, Marko. http://markorodriguez.com On Jul 15, 2011, at 12:30 PM, Marko Rodriguez wrote: Hi, Pere, my last thought on this is that you might want to use something like JDBM2. http://code.google.com/p/jdbm2/ It has a Maven2 dependency if you do it that way. JDBM2 provides you some Java collection implementations that are persistent to disk... See ya, Marko. http://markorodriguez.com On Jul 15, 2011, at 12:22 PM, Pere Urbon Bayes wrote: Yeah! well to order in memory I can really deal with that task, for this I really don't need cypher. Don´t take it personally, I know you really want to promote your language, xD! - purbon PD: See you next graphdb meetup in Berlin! On 15 July 2011 19:37, Michael Hunger michael.hun...@neotechnology.comwrote: You might also try to use cypher for your traversal which is able to order (also in memory of course). See the screencast I did: http://neo4j.vidcaster.com/U2Y/introduction-to-cypher/ It's even the same domain. Cheers Michael Am 15.07.2011 um 17:24 schrieb Rick Bullotta: But you couldn't easy do a complex traversal with an RDBMS. ;-) I suspect that even if you could write some magic SQL to do so, you'd almost certainly lose the benefits any optimized sorting/ordering that indices provide, so even the RDBMS would have to post-process the sort. If the traversal isn't complex or randomly deep, then Neo indexing + querying might work for you the same way an RDBMS might handle it. -Original Message- From: user-boun...@lists.neo4j.org [mailto:user-boun...@lists.neo4j.org] On Behalf Of Pere Urbon Bayes Sent: Friday, July 15, 2011 11:21 AM To: Neo4j user discussions Subject: Re: [Neo4j] Getting sorted results from a traversal Well, the thing is that the database can easy deal with that, as the relational system do. / purbon On 15 July 2011 17:08, Rick Bullotta rick.bullo...@thingworx.com wrote: The DB would do it in memory too, wouldn't it? In the case of a complex traversal, indexes don't really apply, since the ordering and the traversal order are unrelated, so you'd generally need to sort in memory anyway. Whether you do it as you add elements to the traversed list of stuff or do it after the fact is another discussion, but I think in either case, it needs to be done after the fact. -Original Message- From: user-boun...@lists.neo4j.org [mailto:user-boun...@lists.neo4j.org ] On Behalf Of Pere Urbon Bayes Sent: Friday, July 15, 2011 11:05 AM To: Neo4j user discussions Subject: Re: [Neo4j] Getting sorted results from a traversal Well, this is great if I want to do all the math in memory, but I expect to do the computation by the db. / purbon On 15 July 2011 16:10, Marko Rodriguez okramma...@gmail.com wrote: Hi Pere, To sort you need to have all your results. Thus, in Gremlin (and hopefully you can do the mapping to the core Neo4j traverser framework), results = [] g.v(1).out('friend').out('likes') results // what my friends like results.sort{a,b - a.name = b.name} // sort resultant vertices by name In short, once you have the result of your traversal, you can then apply a comparator to the Collection to sort it as you please --- its just Java comparators. See ya, Marko. http://markorodriguez.com On Jul 15, 2011, at 8:06 AM, Pere Urbon Bayes wrote: HI! I am on the situation of having to traverse neo4j, and then expect the resultset returned to be ordered in a certain order. I've been researching a bit over the traversal API, but I did not find anything related to that. I really will appreciate any tip on that!! BTW I expect to be possible right?, as we have in relational the ordering, or on redis, etc... /purbon -- Pere Urbon-Bayes moviepilot GmbH | Mehringdamm 33 | 10961 Berlin | Germany Telefon +49 30 616 512 -110 | Fax +49 30 616 512 -133 ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user -- Pere Urbon-Bayes moviepilot GmbH | Mehringdamm 33 | 10961 Berlin | Germany Telefon +49 30 616 512 -110 | Fax +49 30 616 512 -133 ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user -- Pere Urbon-Bayes moviepilot GmbH | Mehringdamm 33 | 10961 Berlin | Germany Telefon +49 30 616 512 -110 | Fax +49 30 616 512 -133
Re: [Neo4j] Getting sorted results from a traversal
Marko, Isn't that pretty similar to what https://github.com/peterneubauer/graph-collectionshttps://github.com/peterneubauer/graph-collections/tree/master/src/main/java/org/neo4j/collections/sortedtree provides for Neo4j? David On Fri, Jul 15, 2011 at 11:30 AM, Marko Rodriguez okramma...@gmail.comwrote: Hi, Pere, my last thought on this is that you might want to use something like JDBM2. http://code.google.com/p/jdbm2/ It has a Maven2 dependency if you do it that way. JDBM2 provides you some Java collection implementations that are persistent to disk... See ya, Marko. http://markorodriguez.com On Jul 15, 2011, at 12:22 PM, Pere Urbon Bayes wrote: Yeah! well to order in memory I can really deal with that task, for this I really don't need cypher. Don´t take it personally, I know you really want to promote your language, xD! - purbon PD: See you next graphdb meetup in Berlin! On 15 July 2011 19:37, Michael Hunger michael.hun...@neotechnology.com wrote: You might also try to use cypher for your traversal which is able to order (also in memory of course). See the screencast I did: http://neo4j.vidcaster.com/U2Y/introduction-to-cypher/ It's even the same domain. Cheers Michael Am 15.07.2011 um 17:24 schrieb Rick Bullotta: But you couldn't easy do a complex traversal with an RDBMS. ;-) I suspect that even if you could write some magic SQL to do so, you'd almost certainly lose the benefits any optimized sorting/ordering that indices provide, so even the RDBMS would have to post-process the sort. If the traversal isn't complex or randomly deep, then Neo indexing + querying might work for you the same way an RDBMS might handle it. -Original Message- From: user-boun...@lists.neo4j.org [mailto: user-boun...@lists.neo4j.org] On Behalf Of Pere Urbon Bayes Sent: Friday, July 15, 2011 11:21 AM To: Neo4j user discussions Subject: Re: [Neo4j] Getting sorted results from a traversal Well, the thing is that the database can easy deal with that, as the relational system do. / purbon On 15 July 2011 17:08, Rick Bullotta rick.bullo...@thingworx.com wrote: The DB would do it in memory too, wouldn't it? In the case of a complex traversal, indexes don't really apply, since the ordering and the traversal order are unrelated, so you'd generally need to sort in memory anyway. Whether you do it as you add elements to the traversed list of stuff or do it after the fact is another discussion, but I think in either case, it needs to be done after the fact. -Original Message- From: user-boun...@lists.neo4j.org [mailto: user-boun...@lists.neo4j.org ] On Behalf Of Pere Urbon Bayes Sent: Friday, July 15, 2011 11:05 AM To: Neo4j user discussions Subject: Re: [Neo4j] Getting sorted results from a traversal Well, this is great if I want to do all the math in memory, but I expect to do the computation by the db. / purbon On 15 July 2011 16:10, Marko Rodriguez okramma...@gmail.com wrote: Hi Pere, To sort you need to have all your results. Thus, in Gremlin (and hopefully you can do the mapping to the core Neo4j traverser framework), results = [] g.v(1).out('friend').out('likes') results // what my friends like results.sort{a,b - a.name = b.name} // sort resultant vertices by name In short, once you have the result of your traversal, you can then apply a comparator to the Collection to sort it as you please --- its just Java comparators. See ya, Marko. http://markorodriguez.com On Jul 15, 2011, at 8:06 AM, Pere Urbon Bayes wrote: HI! I am on the situation of having to traverse neo4j, and then expect the resultset returned to be ordered in a certain order. I've been researching a bit over the traversal API, but I did not find anything related to that. I really will appreciate any tip on that!! BTW I expect to be possible right?, as we have in relational the ordering, or on redis, etc... /purbon -- Pere Urbon-Bayes moviepilot GmbH | Mehringdamm 33 | 10961 Berlin | Germany Telefon +49 30 616 512 -110 | Fax +49 30 616 512 -133 ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user -- Pere Urbon-Bayes moviepilot GmbH | Mehringdamm 33 | 10961 Berlin | Germany Telefon +49 30 616 512 -110 | Fax +49 30 616 512 -133 ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user -- Pere Urbon
Re: [Neo4j] Getting sorted results from a traversal
Hey, Isn't that pretty similar to what https://github.com/peterneubauer/graph-collectionshttps://github.com/peterneubauer/graph-collections/tree/master/src/main/java/org/neo4j/collections/sortedtree provides for Neo4j? I dunno. I haven't played with Graph Collections. But I assume so if it implements Java Collections interfaces ? The reason I brought up JDBM2 is because Pere still didn't seem satisfied after Niels recommendation of using graph-collections (that was the first email response to Pere). Just throwing stuff out there -- must...make..Pere...happy... Marko. http://markorodriguez.com ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] Getting sorted results from a traversal
With our jruby script extension you can write server-side code in ruby that can do that for you. Cheers Michael Am 15.07.2011 um 20:22 schrieb Pere Urbon Bayes: Yeah! well to order in memory I can really deal with that task, for this I really don't need cypher. Don´t take it personally, I know you really want to promote your language, xD! - purbon PD: See you next graphdb meetup in Berlin! On 15 July 2011 19:37, Michael Hunger michael.hun...@neotechnology.comwrote: You might also try to use cypher for your traversal which is able to order (also in memory of course). See the screencast I did: http://neo4j.vidcaster.com/U2Y/introduction-to-cypher/ It's even the same domain. Cheers Michael Am 15.07.2011 um 17:24 schrieb Rick Bullotta: But you couldn't easy do a complex traversal with an RDBMS. ;-) I suspect that even if you could write some magic SQL to do so, you'd almost certainly lose the benefits any optimized sorting/ordering that indices provide, so even the RDBMS would have to post-process the sort. If the traversal isn't complex or randomly deep, then Neo indexing + querying might work for you the same way an RDBMS might handle it. -Original Message- From: user-boun...@lists.neo4j.org [mailto:user-boun...@lists.neo4j.org] On Behalf Of Pere Urbon Bayes Sent: Friday, July 15, 2011 11:21 AM To: Neo4j user discussions Subject: Re: [Neo4j] Getting sorted results from a traversal Well, the thing is that the database can easy deal with that, as the relational system do. / purbon On 15 July 2011 17:08, Rick Bullotta rick.bullo...@thingworx.com wrote: The DB would do it in memory too, wouldn't it? In the case of a complex traversal, indexes don't really apply, since the ordering and the traversal order are unrelated, so you'd generally need to sort in memory anyway. Whether you do it as you add elements to the traversed list of stuff or do it after the fact is another discussion, but I think in either case, it needs to be done after the fact. -Original Message- From: user-boun...@lists.neo4j.org [mailto:user-boun...@lists.neo4j.org ] On Behalf Of Pere Urbon Bayes Sent: Friday, July 15, 2011 11:05 AM To: Neo4j user discussions Subject: Re: [Neo4j] Getting sorted results from a traversal Well, this is great if I want to do all the math in memory, but I expect to do the computation by the db. / purbon On 15 July 2011 16:10, Marko Rodriguez okramma...@gmail.com wrote: Hi Pere, To sort you need to have all your results. Thus, in Gremlin (and hopefully you can do the mapping to the core Neo4j traverser framework), results = [] g.v(1).out('friend').out('likes') results // what my friends like results.sort{a,b - a.name = b.name} // sort resultant vertices by name In short, once you have the result of your traversal, you can then apply a comparator to the Collection to sort it as you please --- its just Java comparators. See ya, Marko. http://markorodriguez.com On Jul 15, 2011, at 8:06 AM, Pere Urbon Bayes wrote: HI! I am on the situation of having to traverse neo4j, and then expect the resultset returned to be ordered in a certain order. I've been researching a bit over the traversal API, but I did not find anything related to that. I really will appreciate any tip on that!! BTW I expect to be possible right?, as we have in relational the ordering, or on redis, etc... /purbon -- Pere Urbon-Bayes moviepilot GmbH | Mehringdamm 33 | 10961 Berlin | Germany Telefon +49 30 616 512 -110 | Fax +49 30 616 512 -133 ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user -- Pere Urbon-Bayes moviepilot GmbH | Mehringdamm 33 | 10961 Berlin | Germany Telefon +49 30 616 512 -110 | Fax +49 30 616 512 -133 ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user -- Pere Urbon-Bayes moviepilot GmbH | Mehringdamm 33 | 10961 Berlin | Germany Telefon +49 30 616 512 -110 | Fax +49 30 616 512 -133 ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user -- Pere Urbon-Bayes moviepilot GmbH | Mehringdamm 33 | 10961 Berlin | Germany Telefon +49
Re: [Neo4j] Getting sorted results from a traversal
Jajajaja, Marko I just need to meet you sometime! I always listen good thing about you from Peter and Achim ... I am quite not satisfied, probably I will change somethings on my project in order to fit better with that use case! - purbon On 15 July 2011 20:53, Marko Rodriguez okramma...@gmail.com wrote: Hey, Isn't that pretty similar to what https://github.com/peterneubauer/graph-collections https://github.com/peterneubauer/graph-collections/tree/master/src/main/java/org/neo4j/collections/sortedtree provides for Neo4j? I dunno. I haven't played with Graph Collections. But I assume so if it implements Java Collections interfaces ? The reason I brought up JDBM2 is because Pere still didn't seem satisfied after Niels recommendation of using graph-collections (that was the first email response to Pere). Just throwing stuff out there -- must...make..Pere...happy... Marko. http://markorodriguez.com ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user -- Pere Urbon-Bayes moviepilot GmbH | Mehringdamm 33 | 10961 Berlin | Germany Telefon +49 30 616 512 -110 | Fax +49 30 616 512 -133 ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] Getting sorted results from a traversal
After a fast walk throw the code I found that option quite interesting and probably the best fit till now for that problem! I hope I will be able to provide a useful solution for those with the same problem than me... I just tried you say I was expecting neo4j to provide me with something like a sort command, I really realise is something not common in the graphdb world, but something cool that can help a lot of people. - purbon On 15 July 2011 20:50, David Montag david.mon...@neotechnology.com wrote: Marko, Isn't that pretty similar to what https://github.com/peterneubauer/graph-collections https://github.com/peterneubauer/graph-collections/tree/master/src/main/java/org/neo4j/collections/sortedtree provides for Neo4j? David On Fri, Jul 15, 2011 at 11:30 AM, Marko Rodriguez okramma...@gmail.com wrote: Hi, Pere, my last thought on this is that you might want to use something like JDBM2. http://code.google.com/p/jdbm2/ It has a Maven2 dependency if you do it that way. JDBM2 provides you some Java collection implementations that are persistent to disk... See ya, Marko. http://markorodriguez.com On Jul 15, 2011, at 12:22 PM, Pere Urbon Bayes wrote: Yeah! well to order in memory I can really deal with that task, for this I really don't need cypher. Don´t take it personally, I know you really want to promote your language, xD! - purbon PD: See you next graphdb meetup in Berlin! On 15 July 2011 19:37, Michael Hunger michael.hun...@neotechnology.com wrote: You might also try to use cypher for your traversal which is able to order (also in memory of course). See the screencast I did: http://neo4j.vidcaster.com/U2Y/introduction-to-cypher/ It's even the same domain. Cheers Michael Am 15.07.2011 um 17:24 schrieb Rick Bullotta: But you couldn't easy do a complex traversal with an RDBMS. ;-) I suspect that even if you could write some magic SQL to do so, you'd almost certainly lose the benefits any optimized sorting/ordering that indices provide, so even the RDBMS would have to post-process the sort. If the traversal isn't complex or randomly deep, then Neo indexing + querying might work for you the same way an RDBMS might handle it. -Original Message- From: user-boun...@lists.neo4j.org [mailto: user-boun...@lists.neo4j.org] On Behalf Of Pere Urbon Bayes Sent: Friday, July 15, 2011 11:21 AM To: Neo4j user discussions Subject: Re: [Neo4j] Getting sorted results from a traversal Well, the thing is that the database can easy deal with that, as the relational system do. / purbon On 15 July 2011 17:08, Rick Bullotta rick.bullo...@thingworx.com wrote: The DB would do it in memory too, wouldn't it? In the case of a complex traversal, indexes don't really apply, since the ordering and the traversal order are unrelated, so you'd generally need to sort in memory anyway. Whether you do it as you add elements to the traversed list of stuff or do it after the fact is another discussion, but I think in either case, it needs to be done after the fact. -Original Message- From: user-boun...@lists.neo4j.org [mailto: user-boun...@lists.neo4j.org ] On Behalf Of Pere Urbon Bayes Sent: Friday, July 15, 2011 11:05 AM To: Neo4j user discussions Subject: Re: [Neo4j] Getting sorted results from a traversal Well, this is great if I want to do all the math in memory, but I expect to do the computation by the db. / purbon On 15 July 2011 16:10, Marko Rodriguez okramma...@gmail.com wrote: Hi Pere, To sort you need to have all your results. Thus, in Gremlin (and hopefully you can do the mapping to the core Neo4j traverser framework), results = [] g.v(1).out('friend').out('likes') results // what my friends like results.sort{a,b - a.name = b.name} // sort resultant vertices by name In short, once you have the result of your traversal, you can then apply a comparator to the Collection to sort it as you please --- its just Java comparators. See ya, Marko. http://markorodriguez.com On Jul 15, 2011, at 8:06 AM, Pere Urbon Bayes wrote: HI! I am on the situation of having to traverse neo4j, and then expect the resultset returned to be ordered in a certain order. I've been researching a bit over the traversal API, but I did not find anything related to that. I really will appreciate any tip on that!! BTW I expect to be possible right?, as we have in relational the ordering, or on redis, etc... /purbon -- Pere Urbon-Bayes moviepilot GmbH | Mehringdamm 33 | 10961 Berlin | Germany Telefon +49 30 616 512 -110 | Fax +49 30 616 512 -133