in indexer-core/src/main/java/org/apache/maven/index/DefaultIteratorResultSet.java [80:137]
protected DefaultIteratorResultSet(
final IteratorSearchRequest request,
final NexusIndexMultiSearcher indexSearcher,
final List<IndexingContext> contexts,
final TopDocs hits)
throws IOException {
this.searchRequest = request;
this.indexSearcher = indexSearcher;
this.contexts = contexts;
{
int maxDoc = 0;
this.starts = new int[contexts.size() + 1]; // build starts array
// this is good to do as we have NexusIndexMultiSearcher passed in contructor, so it is already open, hence
// #acquire() already invoked on underlying NexusIndexMultiReader
final List<IndexSearcher> acquiredSearchers =
indexSearcher.getNexusIndexMultiReader().getAcquiredSearchers();
for (int i = 0; i < contexts.size(); i++) {
starts[i] = maxDoc;
maxDoc += acquiredSearchers.get(i).getIndexReader().maxDoc(); // compute maxDocs
}
starts[contexts.size()] = maxDoc;
}
this.filter = request.getArtifactInfoFilter();
this.postprocessor = request.getArtifactInfoPostprocessor();
this.matchHighlightRequests = request.getMatchHighlightRequests();
List<MatchHighlightRequest> matchHighlightRequests = new ArrayList<>();
for (MatchHighlightRequest hr : request.getMatchHighlightRequests()) {
Query rewrittenQuery = hr.getQuery().rewrite(indexSearcher.getIndexReader());
matchHighlightRequests.add(new MatchHighlightRequest(hr.getField(), rewrittenQuery, hr.getHighlightMode()));
}
this.hits = hits;
this.from = request.getStart();
this.count = (request.getCount() == AbstractSearchRequest.UNDEFINED
? hits.scoreDocs.length
: Math.min(request.getCount(), hits.scoreDocs.length));
this.pointer = from;
this.processedArtifactInfoCount = 0;
this.maxRecPointer = from + count;
ai = createNextAi();
if (ai == null) {
cleanUp();
}
}