Thanks!, it seems to be the way to go. On Fri, Nov 17, 2017 at 10:05 AM, Alan Woodward <a...@flax.co.uk> wrote:
> You can use SearcherLifetimeManager to keep track of specific > IndexSearcher instances - see Mike’s blog at http://blog.mikemccandless. > com/2011/11/searcherlifetimemanager-prevents-broken.html < > http://blog.mikemccandless.com/2011/11/searcherlifetimemanager- > prevents-broken.html> > > Alan Woodward > www.flax.co.uk > > > > On 17 Nov 2017, at 08:30, ivan cruces <ivan.cru...@object-matrix.com> > wrote: > > > > Hi, > > > > I have implemented pagination with Lucene using the searchAfter method > > provided by IndexSearcher. In every call, I pass the last ScoreDoc > returned > > in the previous page. > > > > The problem is that sometimes, the index gets updated between page and > page > > and occasionally I am getting this exception: > > > > java.lang.IllegalArgumentException: after.doc exceeds the number of > > documents in the reader: after.doc=337 limit=337 > > at > > org.apache.lucene.search.IndexSearcher.searchAfter( > IndexSearcher.java:434) > > > > I understand that Lucene changes the docs ids every now and then (segment > > merges, etc.) and I guess that is why that exception is happening as > > searchAfter relies on those docs ids. > > > > How could I improve this pagination mechanism to avoid this exception? Is > > there any better way to implement pagination with Lucene? > > > > > > Thanks, > > > > Iván. > >