2 Answers
2

I assume you are doing this for the purpose of paging. The way this is normally done in a Lucene implementation (including Solr) is by simply executing the query normally, but only actually loading the stored data for the results you are interested in.

In a typical paging scenario, this may mean executing the same query multiple times, which may seem like a waste of resources, but with help from the system cache and possibly Lucene's caching it's not so bad. The benefit is statelessness, which allows you to scale.