protected int searchFlat()

in indexer-core/src/main/java/org/apache/maven/index/DefaultSearchEngine.java [129:182]


    protected int searchFlat(
            FlatSearchRequest req,
            Collection<ArtifactInfo> result,
            List<IndexingContext> participatingContexts,
            Query query)
            throws IOException {
        int hitCount = 0;
        for (IndexingContext context : participatingContexts) {
            final IndexSearcher indexSearcher = context.acquireIndexSearcher();
            try {
                final TopScoreDocCollector collector = doSearchWithCeiling(req, indexSearcher, query);

                if (collector.getTotalHits() == 0) {
                    // context has no hits, just continue to next one
                    continue;
                }

                ScoreDoc[] scoreDocs = collector.topDocs().scoreDocs;

                // uhm btw hitCount contains dups

                hitCount += collector.getTotalHits();

                int start = 0; // from == FlatSearchRequest.UNDEFINED ? 0 : from;

                // we have to pack the results as long: a) we have found aiCount ones b) we depleted hits
                for (int i = start; i < scoreDocs.length; i++) {
                    Document doc = indexSearcher.doc(scoreDocs[i].doc);

                    ArtifactInfo artifactInfo = IndexUtils.constructArtifactInfo(doc, context);

                    if (artifactInfo != null) {
                        artifactInfo.setRepository(context.getRepositoryId());
                        artifactInfo.setContext(context.getId());

                        if (req.getArtifactInfoFilter() != null) {
                            if (!req.getArtifactInfoFilter().accepts(context, artifactInfo)) {
                                continue;
                            }
                        }
                        if (req.getArtifactInfoPostprocessor() != null) {
                            req.getArtifactInfoPostprocessor().postprocess(context, artifactInfo);
                        }

                        result.add(artifactInfo);
                    }
                }
            } finally {
                context.releaseIndexSearcher(indexSearcher);
            }
        }

        return hitCount;
    }