And now it's ready. If you are using SNAPSHOT, please update your dependencies, and check it out. http://docs.neo4j.org/chunked/snapshot/query-start.html#start-relationship-by-index-lookup
Thanks again for providing feedback. It's much more fun coding when I know someone is using it. Andrés On Fri, Sep 30, 2011 at 10:37 AM, Andres Taylor < andres.tay...@neotechnology.com> wrote: > Hey! > > This is something that has been planned since the very first iteration of > Cypher, but no-one seemed to need it, so I have pushed it in front of me. > > Now we seem to have an user that wants it, so I'll add it. > > Don't hold your breath though - it'll be ready when it's ready. > > Andrés > > > On Thu, Sep 29, 2011 at 1:10 PM, st.pa <st...@web.de> wrote: > >> hi. >> when i use a cypher query to get the queued nodes associated via >> queue-relationships to a repository-node which has several million other >> relationships then it takes about six minutes to fill that result list: >> >> <pre> >> List<Node> list = new ArrayList<Node>(); >> StringBuffer s = new StringBuffer(); >> s.append("START repository = ("); >> s.append((Long) controller.getRepositoryNode().getId()); >> s.append(") MATCH (repository)-[:"); >> s.append(Rels.REL_REPOSITORY_QUEUE); >> s.append("]->(node) RETURN node ORDER BY node."); >> s.append(Keys.KEY_TIMESTAMP); >> s.append(" SKIP "); >> s.append(Integer.toString(offset)); >> s.append(" LIMIT "); >> s.append(Integer.toString(buffersize)); >> Log.log(s.toString()); >> Query query = this.parser.parse(s.toString()); >> ExecutionResult result = this.engine.execute(query); >> Iterator<Node> iterator = result.columnAs("node"); >> while (iterator.hasNext()) { >> list.add(iterator.next()); >> } >> </pre> >> >> but when i directly query the relationshipIndex containing all >> queue-relationships and assuming that sorting by timestamp is equivalent >> to sorting by node-ids then it completes in just half a minute, which is >> a dozen times faster: >> >> <pre> >> List<Node> list = new ArrayList<Node>(); >> IndexHits<Relationship> hits = >> controller.getRelationIndexRepositoryUrlQueue().query( >> Keys.KEY_TYPE,Rels.REL_REPOSITORY_QUEUE, >> controller.getRepositoryNode(),null >> ); >> List<Long> ids = new ArrayList<Long>(); >> try { >> for (Relationship hit : hits) { >> ids.add( >> hit.getEndNode().getId() >> ); >> } >> } finally { >> hits.close(); >> } >> Collections.sort(ids); >> for (int i = offset; i < Math.min(offset + buffersize,ids.size()); i++) { >> list.add( >> this.graph.getNodeById( >> ids.get(i) >> ) >> ); >> } >> </pre> >> >> now my question. how can i efficiently get such a result list sorted for >> some node property other than id. and question number two: how would a >> cypher statement look like if it supported relationship-indices. maybe >> >> <pre> >> START x = (1) >> MATCH (x)-[r:(MyRelationIndex,type,MyRelationType)]->(y) >> RETURN r,y >> ORDER BY y.somePropertyOtherThanId >> </pre> >> >> similar to nodeIndexLookups, where i give the name of the relationship >> index to use, key and value for the relationship, start and end nodes >> are given by (x) and (y) in this case. i'd like that feature very much >> and if i knew how i'd probably even help to get on with it but anyway i >> can be patient. >> >> >> kindly, st.p. >> _______________________________________________ >> 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