Вам нужно будет применить свой собственный механизм подкачки, примерно такой, как показано ниже.
IList<Document> luceneDocuments = new List<Document>();
IndexReader indexReader = new IndexReader(directory);
Searcher searcher = new IndexSearcher(indexReader);
TopDocs results = searcher.Search("Your Query", null, skipRecords + takeRecords);
ScoreDoc[] scoreDocs = results.scoreDocs;
for (int i = skipRecords; i < results.totalHits; i++)
{
if (i > (skipRecords + takeRecords) - 1)
{
break;
}
luceneDocuments.Add(searcher.Doc(scoreDocs[i].doc));
}
Вы обнаружите, что итерация массива ScoreDocs будет легкой, поскольку данные, содержащиеся в индексе, фактически не используются, пока не будет вызван метод searcher.Doc.
Обратите внимание, что этот пример был написан для слегка измененной версии Lucene.NET 2.3.2, но основной принцип должен работать против любой последней версии Lucene.