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