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.

Reply via email to