protected int searchGrouped()

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


    protected int searchGrouped(
            GroupedSearchRequest req,
            Map<String, ArtifactInfoGroup> result,
            Grouping grouping,
            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) {
                    ScoreDoc[] scoreDocs = collector.topDocs().scoreDocs;

                    hitCount += collector.getTotalHits();

                    for (ScoreDoc scoreDoc : scoreDocs) {
                        Document doc = indexSearcher.doc(scoreDoc.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);
                            }

                            if (!grouping.addArtifactInfo(result, artifactInfo)) {
                                // fix the hitCount accordingly
                                hitCount--;
                            }
                        }
                    }
                }
            } finally {
                context.releaseIndexSearcher(indexSearcher);
            }
        }

        return hitCount;
    }