The implementation in IndexHits doesn't keep previous results in memory, which is a good thing IMHO. So your suggestion that there should be a getListIterator on IndexHits makes sense and is really the same solution (at least how I would choose to implement it) in that it would return a new ListIterator which would have the IndexHits iterator as its underlying iterator and keep visited items around for being able to position it however.
2010/9/17 Honnur Vorvoi <vhon...@yahoo.com> > Thanks Mattias for the suggestion. > > What if we had a method in IndexHits<Node> as below. > ListIterator<Node> listIterator = IndexHits<Node>.getListIterator() > > The ListIterator can traverse in both ways as opposed to Iterator which is > forward only. > If that solves the reverse traverse problem for pagination, is there an > easy way to get a handle to the ListIterator. > Even better would be to get a handle to the underlying list (ArrayList, in > this case) so we can go back and forth by List's index value. > I am interested to know if the underlying implementation can facilitate > this. > > > > Date: Thu, 16 Sep 2010 22:39:10 +0200 > From: Mattias Persson <matt...@neotechnology.com> > Subject: Re: [Neo4j] IndexProvider question > To: Neo4j user discussions <user@lists.neo4j.org> > Message-ID: > > <aanlktinmd6-mrjrjspp92kan+de_bjbw2dp+l3+nt...@mail.gmail.com<aanlktinmd6-mrjrjspp92kan%2bde_bjbw2dp%2bl3%2bnt...@mail.gmail.com> > > > Content-Type: text/plain; charset=UTF-8 > > I'd say wrapping the Iterator from IndexHits in something that you can do > pagination on would be a good way to go. There could also be such a > built-in > iterator in the index component for convenience. So the CachingIterator (or > whatever it'd be called) would use the underlying IndexHits iterator to > lazily fetch new results it hasn't already gotten and remember them so that > consecutive requests for a particular item could be returned instantly, and > even be able to be positioned at an arbitrary position and iterate from > there. It's a pretty generic iterator implementation and it'd be fun to > implement... if I get the time for it. > > 2010/9/16 Honnur Vorvoi <vhon...@yahoo.com> > > > Thanks a lot Mattias. > > > > I was wondering if there's a way in IndexHits<Node> to actually traverse > > back to search results. > > I know we can traverse forward the search results. > > > > I am trying to implement pagination and I am caching the IndexHits<Node> > > for the same. > > Say, I have already moved to the node #30, but want to return to node#20 > to > > 25. > > Obviously I dont want to cache all the search results and I like the lazy > > loading feature in IndexHits<Node> > > > > > > Date: Wed, 15 Sep 2010 14:16:09 +0200 > > From: Mattias Persson <matt...@neotechnology.com> > > Subject: Re: [Neo4j] IndexProvider question > > To: Neo4j user discussions <user@lists.neo4j.org> > > Message-ID: > > <aanlkti=xmdkstyk8l49m1uiqaxroxgrq2rcv004aj...@mail.gmail.com> > > Content-Type: text/plain; charset=UTF-8 > > > > I just added a way to do this (not as a persistent config, since they > > control write behaviour), but instead as an addition to QueryContext. So > > you > > can do like this: > > > > myNodeIndex.query( new QueryContext( "name:Mattias > > occupation:developer" > > ).defaultOperator( Operator.AND ) ); > > > > I know it's a bit verbose, but it's a start at least. Grab the latest > > version and try it out to see if it works for you. > > > > 2010/9/10 Mattias Persson <matt...@neotechnology.com> > > > > > 2010/9/10, Honnur Vorvoi <vhon...@yahoo.com>: > > > > I would like to set AND as the default operator when I create index > > using > > > > the new index library: > > > > Index = indexProvider.nodeIndex( "fulltext", > > > > LuceneIndexProvider.FULLTEXT_CONFIG ); > > > > > > > > I didn't find "setDefaultOperator" (similar to the one > > > > in LuceneFulltextQueryIndexService )in any of the provider classes. > > > > Is it supported in the new index provider? if not, is there a way we > > can > > > set > > > > the same? > > > > > > > > Thanks in advance. > > > > > > That functionality is easy to add, I just haven't gotten around to do > > > it. I'll try to add that as soon as possible. Excellent feedback on > > > the new IndexProvider framework, keep it coming! > > > > > > > > > > > > > > > --- On Thu, 9/9/10, Honnur Vorvoi <vhon...@yahoo.com> wrote: > > > > > > > > > > > > From: Honnur Vorvoi <vhon...@yahoo.com> > > > > Subject: Re: [Neo4j] IndexProvider question > > > > To: user@lists.neo4j.org > > > > Date: Thursday, September 9, 2010, 10:33 PM > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Thanks Mattias. > > > > Since IndexProvider does all LuceneFulltextQueryIndexService can do > and > > > much > > > > more, I am going to use just IndexProvider. > > > > > > > > > > > > Date: Wed, 8 Sep 2010 16:28:56 +0200 > > > > From: Mattias Persson <matt...@neotechnology.com> > > > > Subject: Re: [Neo4j] IndexProvider question > > > > To: Neo4j user discussions <user@lists.neo4j.org> > > > > Message-ID: > > > > <aanlktin4cjw=smw00=1nlkt8ftmys6xtnvtrve_j9...@mail.gmail.com> > > > > Content-Type: text/plain; charset=UTF-8 > > > > > > > > Hi Honnur! > > > > > > > > 2010/9/6, Honnur Vorvoi <vhon...@yahoo.com>: > > > >> Hello, > > > >> > > > >> I have the following questions with regard to the > > IndexProvider(example > > > >> below): > > > >> > > > >> 1. I already have LuceneFulltextQueryIndexService. Can I use > > > IndexProvider > > > >> with the same graphDb as well? or are they mutually exclusive? > > > > > > > > They are separate from one another so both can be used alongside of > > > > each other. Something stored in one of either > > > > LuceneIndexService/LuceneIndexProvider won't affect the other. > > > > > > > >> 2. What doesn the param "users" in provider.nodeIndex("users") > > > represent? > > > > > > > > The LuceneIndexService can only keep values from one key in each > > > > index, but the new LuceneIndexProvider can spawn indexes which can > > > > contain any number of keys and values (making compound queries > > > > possible). Since an index isn't tied to a property key you must name > > > > each index yourself. Each index can also be configured to be either > > > > fulltext or not, to use lower case conversion or not, a.s.o. > > > > > > > >> 3. Do I need to add all the properties in Index<Node>(line# 4&5) in > > > order > > > >> to > > > >> query? (I have already index the same properties with > > > >> LuceneFulltextQueryIndexService) > > > >> > > > > see my answer for (1), in short: LuceneIndexProvider and the indexes > > > > it spawns has nothing to do with LuceneIndexService (or any > derivative > > > > thereof) and hence can't share state. > > > > > > > >> 4. Is it easy to include the query(String) method in > > > >> LuceneFulltextQueryIndexService, so I can use just one indexservice > > > >> otherwise I would be using LuceneIndexProvider just for > query(String) > > > >> method. > > > > > > > > To add compound querying the storage format (i.e. Lucene usage) > needed > > > > to change in incompatible ways, so it isn't an easy fix to add that. > > > > It could however be done by querying multiple indexes in parallell > and > > > > merge the results afterwards, but I don't think performance would be > > > > anywhere near using Lucene the "right way" for compound queries, as > > > > LuceneIndexProvider does. > > > > > > > >> > > > >> As alwasy, appreciate your suggestions/recommendations > > > >> > > > >> > > > >> 1 IndexProvider provider = new LuceneIndexProvider( graphDb ); > > > >> 2 Index<Node> myIndex = provider.nodeIndex( "users" ); > > > >> 3 > > > >> 4 myIndex.add( myNode, "type", "value1" ); > > > >> 5 myIndex.add( myNode, "key1", "value2" ); > > > >> 6 > > > >> 7 // Ask lucene queries directly here > > > >> 8 for ( Node searchHit : myIndex.query( "type:value1 AND > > > key1:value2" > > > >> ) > > > >> ) > > > >> 9 { > > > >> 10 System.out.println( "Found " + searchHit ); > > > >> 11 } > > > >> _______________________________________________ > > > >> Neo4j mailing list > > > >> User@lists.neo4j.org > > > >> https://lists.neo4j.org/mailman/listinfo/user > > > >> > > > > > > > > > > > > -- > > > > Mattias Persson, [matt...@neotechnology.com] > > > > Hacker, Neo Technology > > > > www.neotechnology.com > > > > _______________________________________________ > > > > Neo4j mailing list > > > > User@lists.neo4j.org > > > > https://lists.neo4j.org/mailman/listinfo/user > > > > > > > > > > > > > -- > > > Mattias Persson, [matt...@neotechnology.com] > > > Hacker, Neo Technology > > > www.neotechnology.com > > > > > > > _______________________________________________ > > 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 > -- Mattias Persson, [matt...@neotechnology.com] Hacker, Neo Technology www.neotechnology.com _______________________________________________ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user