protected DefaultIteratorResultSet()

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();
        }
    }