Fergie
Fergie

Reputation: 6235

How to return all newest nodes from neo4j?

Is it possible to query neo4j for the newest nodes? In this case, the indexed property "timestamp" records time in milliseconds on every node.

All of the cypher examples I have lfound concern graph-type queries- "start at node n and follow relationships. What is the general best approach for returning resultsets sorted on one field? Is this even possible in a graph database such as node4j?

Upvotes: 1

Views: 828

Answers (2)

Michael Hunger
Michael Hunger

Reputation: 41676

In the embedded Java API it is possible to add sorting using Lucene constructs.

http://docs.neo4j.org/chunked/milestone/indexing-lucene-extras.html#indexing-lucene-query-objects http://blog.richeton.com/2009/05/12/lucene-sort-tips/

In the server mode you can pass an ?order parameter to the lucene lookup query.

http://docs.neo4j.org/chunked/milestone/rest-api-indexes.html#rest-api-find-node-by-query

Depending on how you indexed your data (not numerically as there are issues with the lucene query syntax parser and numeric searches :( ), in cypher you can do:

start n=node:myindes('time: [1 to 1000]') return n order by n.time asc

There are also more graphy ways of doing that, e.g. by linking the events with a NEXT relationship and returning the head and next n elements from this list

http://docs.neo4j.org/chunked/milestone/cypher-cookbook-newsfeed.html

or to create a tree structure for time:

http://docs.neo4j.org/chunked/milestone/cypher-cookbook-path-tree.html

Upvotes: 5

Axel Morgner
Axel Morgner

Reputation: 2312

Yes, it is possible, and there are some different ways to do so.

You could either use a timestamp property and a classic index, and sort your result set by that property. Or you could create an in-graph time-based index, like f.e. described in Peter's blog post:

http://blog.neo4j.org/2012/02/modeling-multilevel-index-in-neoj4.html

Upvotes: 2

Related Questions