protected IteratorSearchRequest createRequest( Query bq, Integer from, Integer count, Integer hitLimit, boolean uniqueRGA, List<ArtifactInfoFilter> extraFilters ) IteratorSearchRequest req = new IteratorSearchRequest( bq ); req.setArtifactInfoFilter( new AndMultiArtifactInfoFilter( filters ) ); req.setArtifactInfoPostprocessor( new ArtifactInfoPostprocessor() req.setArtifactInfoPostprocessor( new ArtifactInfoPostprocessor() req.setStart( from ); req.setCount( count ); req.setResultHitLimit( hitLimit );
public IteratorSearchResponse searchIterator( IteratorSearchRequest request ) throws IOException { if ( request.getContexts().isEmpty() ) { return searcher.searchIteratorPaged( request, indexingContexts.values() ); } else { return searcher.forceSearchIteratorPaged( request, request.getContexts() ); } }
protected DefaultIteratorResultSet( final IteratorSearchRequest request, final IndexSearcher indexSearcher, final List<IndexingContext> contexts, final Hits 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 for ( int i = 0; i < contexts.size(); i++ ) { starts[i] = maxDoc; maxDoc += contexts.get( i ).getIndexReader().maxDoc(); // compute maxDocs } starts[contexts.size()] = maxDoc; } this.filter = request.getArtifactInfoFilter(); this.postprocessor = request.getArtifactInfoPostprocessor(); this.matchHighlightRequests = request.getMatchHighlightRequests(); this.hits = hits; this.from = ( request.getStart() == AbstractSearchRequest.UNDEFINED ? 0 : request.getStart() ); this.count = ( request.getCount() == AbstractSearchRequest.UNDEFINED ? HARD_HIT_COUNT_LIMIT : Math.min( request.getCount(), HARD_HIT_COUNT_LIMIT ) ); this.pointer = from; this.processedArtifactInfoCount = 0; this.maxRecPointer = from + count; ai = createNextAi(); }
if ( request.getStart() < 0 ) request.setStart( IteratorSearchRequest.UNDEFINED ); if ( request.getCount() < 0 ) request.setCount( IteratorSearchRequest.UNDEFINED ); indexSearcher.search( request.getQuery(), new Sort( new SortField[] { SortField.FIELD_SCORE, new SortField( null, SortField.DOC, false ) } ) ); return new IteratorSearchResponse( request.getQuery(), hits.length(), new DefaultIteratorResultSet( request, indexSearcher, contexts, hits ) );
req.getMatchHighlightRequests().add( new MatchHighlightRequest( MAVEN.CLASSNAMES, q, MatchHighlightMode.HTML ) ); req.getContexts().add( localContext ); req.getContexts().add( remoteContext );
IteratorSearchRequest searchRequest = new IteratorSearchRequest( q, request.getArtifactInfoFilter() ); searchRequest.getContexts().add( request.getFactory().getIndexingContext() );
public IteratorSearchRequest( Query query, List<IndexingContext> contexts, ArtifactInfoFilter filter ) { super( query, contexts ); setArtifactInfoFilter( filter ); } }
public ArtifactInfo identify( Query query, Collection<IndexingContext> contexts ) throws IOException { IteratorSearchResponse result = searcher.searchIteratorPaged( new IteratorSearchRequest( query ), contexts ); // TODO: this implementation is flakey: case a) 0 hits is okay, b) 1 hit is okay, c1) >1 hits and all same GAVs // -- okay but which source repo will be used? c2) >1 hits, and different GAVs --- huh? if ( result.getTotalHits() > 0 ) { return result.getResults().next(); } else { return null; } }
req.getMatchHighlightRequests().add( new MatchHighlightRequest( MAVEN.GROUP_ID, q1, MatchHighlightMode.HTML ) ); req.getMatchHighlightRequests().add( new MatchHighlightRequest( MAVEN.ARTIFACT_ID, q2, MatchHighlightMode.HTML ) ); req.getContexts().add( localContext ); req.getContexts().add( remoteContext );
req.getContexts().add( localContext ); req.getContexts().add( remoteContext );
req.getContexts().add( localContext ); req.getContexts().add( remoteContext );