lucene-java-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From ivan cruces <ivan.cru...@object-matrix.com>
Subject Re: Lucene pagination using searchAfter while index is updated
Date Fri, 17 Nov 2017 10:34:18 GMT
Thanks!, it seems to be the way to go.

On Fri, Nov 17, 2017 at 10:05 AM, Alan Woodward <alan@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.cruces@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.
>
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message