More info: That's all transparent ... consumers of our client just enumerate the result like normal and see no difference. Under the covers, this gets split up into pages of 100 nodes loaded on-demand.
Added it because we wanted to pull out 38k nodes from a query and the REST plugin was exploding the Java heap space trying to append the string. :) (Um, streaming anyone? ;)) -- Tatham -----Original Message----- From: [email protected] [mailto:[email protected]] On Behalf Of Romiko Derbynew Sent: Monday, 24 October 2011 10:46 PM To: Neo4j user discussions Subject: Re: [Neo4j] Neo4jRestNet Update Tatham has also added support for paging queries, so queries returning more than 100 results are retrieved via an enumerator per 100 results, this optimises the heap usage as well, by leveraging the groovy Take and Drop functions. Cheers. -----Original Message----- From: [email protected] [mailto:[email protected]] On Behalf Of Tatham Oddie Sent: Friday, 21 October 2011 4:37 PM To: Neo4j user discussions Subject: Re: [Neo4j] Neo4jRestNet Update Hi Kan, FYI - we added parametized Gremlin queries in our implementation and have seen a nice memory heap improvement on the Java side as a result. That is ... instead of: g.v(123).outE[[label:'FOO']] we send: { query: 'g.v(p0).outE[[label:p1]]', params: { p0: 123, p1: 'FOO' } } This allows the query to be cached by neo4j and then just called with different parameters later. -- Tatham -----Original Message----- From: [email protected] [mailto:[email protected]] On Behalf Of KanTube Sent: Thursday, 20 October 2011 9:36 AM To: [email protected] Subject: [Neo4j] Neo4jRestNet Update fwiw... I updated my .Net wrapper https://github.com/SepiaGroup/Neo4jRestNet/ you can now use LINQ on the flilter and sort commands for example Node MyNode = Node.GetNode(123); GremlinScript script = new GremlinScript(MyNode) .Out("Like") .Filter(it => it.GetProperty("MyProp").ToLowerCase() == "TestValue" || it.GetProperty("AnotherProp").Contains("SomeValue")) IEnumerable<Node> ReturnNodes = Gremlin.Post<Node>(script); You can also return a DataTable GremlinScript script = new GremlinScript(); script.NewTable("t") .NodeIndexLookup(new Dictionary<string, object>() { { "FirstName" , "Jack" }, { "LastName", "Shaw" } }) .Filter(it => it.GetProperty("UID") == "jshaw") .As("UserNode") .OutE("Like") .As("LikeRel") .InV() .As("FriendNode") .Table("t", "UserNode", "LikeRel", "FriendNode") .Append("{{it}}{{it.getProperty('{0}')}}{{it.getProperty('{1}')}} >> -1; t","Date", "FirstName"); DataTable tbl = Gremlin.GetTable(script); The above table example will submit the following Gremlin script to Neo4j: t = new Table(); g.V[['FirstName':'Jack','LastName':'Shaw']] .filter{it.getProperty('UID') == 'jshaw'} .as('UserNode') .outE('Likes') .as('LikeRel') .inV() .as('FriendNode') .table(t, ['UserNode','LikeRel','FriendNode']){it}{it.getProperty('Date')}{it.getProperty('FirstName')} >> -1; t"); And the returned table will have column names of "UserNode", "LikeRel", "FriendNode" with typed values of Node, DateTime, string (assuming the properties are stored with the correct types) -- View this message in context: http://neo4j-community-discussions.438527.n3.nabble.com/Neo4jRestNet-Update-tp3436032p3436032.html Sent from the Neo4j Community Discussions mailing list archive at Nabble.com. _______________________________________________ Neo4j mailing list [email protected] https://lists.neo4j.org/mailman/listinfo/user _______________________________________________ Neo4j mailing list [email protected] https://lists.neo4j.org/mailman/listinfo/user _______________________________________________ Neo4j mailing list [email protected] https://lists.neo4j.org/mailman/listinfo/user _______________________________________________ Neo4j mailing list [email protected] https://lists.neo4j.org/mailman/listinfo/user

