@Override public TopFieldDocs reduce(Collection<TopFieldCollector> collectors) throws IOException { final TopFieldDocs[] topDocs = new TopFieldDocs[collectors.size()]; int i = 0; for (TopFieldCollector collector : collectors) { topDocs[i++] = collector.topDocs(); } return TopDocs.merge(rewrittenSort, 0, cappedNumHits, topDocs, true); }
private TopDocs toTopDocs( Query query, QueryContext context, IndexSearcher searcher ) throws IOException { Sort sorting = context != null ? context.getSorting() : null; TopDocs topDocs; if ( sorting == null && context != null ) { topDocs = searcher.search( query, context.getTop() ); } else { if ( context == null || !context.getTradeCorrectnessForSpeed() ) { TopFieldCollector collector = LuceneDataSource.scoringCollector( sorting, context.getTop() ); searcher.search( query, collector ); topDocs = collector.topDocs(); } else { topDocs = searcher.search( query, null, context.getTop(), sorting ); } } return topDocs; }
private TopDocs getTopDocs( Sort sort, int size ) throws IOException { TopDocs topDocs; if ( sort == Sort.RELEVANCE ) { TopScoreDocCollector collector = TopScoreDocCollector.create( size ); replayTo( collector ); topDocs = collector.topDocs(); } else { TopFieldCollector collector = TopFieldCollector.create( sort, size, false, true, false ); replayTo( collector ); topDocs = collector.topDocs(); } return topDocs; }
return collector.topDocs();
private TopDocs getTopDocs( Sort sort, int size ) throws IOException { TopDocs topDocs; if ( sort == Sort.RELEVANCE ) { TopScoreDocCollector collector = TopScoreDocCollector.create( size ); replayTo( collector ); topDocs = collector.topDocs(); } else { TopFieldCollector collector = TopFieldCollector.create( sort, size, false, true, false ); replayTo( collector ); topDocs = collector.topDocs(); } return topDocs; }
@Override public TopFieldDocs reduce(Collection<TopFieldCollector> collectors) throws IOException { final TopFieldDocs[] topDocs = new TopFieldDocs[collectors.size()]; int i = 0; for (TopFieldCollector collector : collectors) { topDocs[i++] = collector.topDocs(); } return TopDocs.merge(rewrittenSort, 0, cappedNumHits, topDocs, true); }
@Override public TopFieldDocs reduce(Collection<TopFieldCollector> collectors) throws IOException { final TopFieldDocs[] topDocs = new TopFieldDocs[collectors.size()]; int i = 0; for (TopFieldCollector collector : collectors) { topDocs[i++] = collector.topDocs(); } return TopDocs.merge(sort, cappedNumHits, topDocs); }
@Override public TopFieldDocs reduce(Collection<TopFieldCollector> collectors) throws IOException { final TopFieldDocs[] topDocs = new TopFieldDocs[collectors.size()]; int i = 0; for (TopFieldCollector collector : collectors) { topDocs[i++] = collector.topDocs(); } return TopDocs.merge(sort, cappedNumHits, topDocs); }
@Override public TopFieldDocs reduce(Collection<TopFieldCollector> collectors) throws IOException { final TopFieldDocs[] topFieldDocs = new TopFieldDocs[collectors.size()]; int pos = 0; for (TopFieldCollector collector : collectors) topFieldDocs[pos++] = collector.topDocs(); return TopDocs.merge(sort, topN, topFieldDocs); }
private TopDocs getTopFieldDocs() { final List<TopFieldDocs> topFieldDocsList = new ArrayList<>(queryCollectorsList.size()); for (QueryCollectorsClassic queryCollectors : queryCollectorsList) if (queryCollectors.topDocsCollector != null) topFieldDocsList.add(((TopFieldCollector) queryCollectors.topDocsCollector).topDocs()); return TopFieldDocs.merge(queryExecution.sort, queryExecution.start, queryExecution.rows, topFieldDocsList.toArray(new TopFieldDocs[topFieldDocsList.size()]), true); }
private void getHits() throws IOException { long time = System.nanoTime(); TopFieldCollector collector = TopFieldCollector.create(sort, numHits, false, true, false, false); searcher.search(query, collector); size = collector.getTotalHits(); offset += scoreDocs.length; scoreDocs = collector.topDocs(offset, numHits).scoreDocs; time = System.nanoTime() - time; final long timeMs = time / 1000000; log.debug("getHits() in {} ms. {}/{}/{}", new Object[] {timeMs, scoreDocs.length, numHits, size}); // double hits for next round numHits *= 2; } }
private void getHits() throws IOException { long time = System.nanoTime(); TopFieldCollector collector = TopFieldCollector.create(sort, numHits, false, true, false, false); searcher.search(query, collector); size = collector.getTotalHits(); offset += scoreDocs.length; scoreDocs = collector.topDocs(offset, numHits).scoreDocs; time = System.nanoTime() - time; final long timeMs = time / 1000000; log.debug("getHits() in {} ms. {}/{}/{}", new Object[] {timeMs, scoreDocs.length, numHits, size}); // double hits for next round numHits *= 2; } }
private void getHits() throws IOException { TopFieldCollector collector = TopFieldCollector.create(sort, numHits, false, true, false, false); searcher.search(query, collector); this.size = collector.getTotalHits(); ScoreDoc[] docs = collector.topDocs().scoreDocs; for (int i = scoreDocs.size(); i < docs.length; i++) { scoreDocs.add(docs[i]); } log.debug("getHits() {}/{}", scoreDocs.size(), numHits); // double hits for next round numHits *= 2; } }
private void getHits() throws IOException { TopFieldCollector collector = TopFieldCollector.create(sort, numHits, false, true, false, false); if (authorizationFilter != null) { searcher.search(query, authorizationFilter, collector); } else { searcher.search(query, collector); } this.size = collector.getTotalHits(); ScoreDoc[] docs = collector.topDocs().scoreDocs; for (int i = scoreDocs.size(); i < docs.length; i++) { scoreDocs.add(docs[i]); } log.debug("getHits() {}/{}", scoreDocs.size(), numHits); // double hits for next round numHits *= 2; }
private static int runQuery(IndexReader indexReader, int count, Query q) throws IOException { long start = System.currentTimeMillis(); IndexSearcher searcher = new IndexSearcher(indexReader); Sort sort = new Sort(); sort.setSort(new SortedSetSortField("category", false)); TopFieldCollector collector = TopFieldCollector.create(sort, count, null, true, true, true); searcher.search(q, collector); ScoreDoc[] hits = collector.topDocs().scoreDocs; int totalHits = collector.getTotalHits(); @SuppressWarnings("unused") long searchTime = System.currentTimeMillis() - start; start = System.currentTimeMillis(); List<String> ids = new ArrayList<>(); for (ScoreDoc hit : hits) { int docId = hit.doc; Document d = searcher.doc(docId); ids.add(d.get("uid")); } @SuppressWarnings("unused") long fetchTime = System.currentTimeMillis() - start; return totalHits; }
/** * Search, sorting by {@link Sort}, and computing * drill down and sideways counts. */ public DrillSidewaysResult search(DrillDownQuery query, Query filter, FieldDoc after, int topN, Sort sort, boolean doDocScores, boolean doMaxScore) throws IOException { if (filter != null) { query = new DrillDownQuery(config, filter, query); } if (sort != null) { int limit = searcher.getIndexReader().maxDoc(); if (limit == 0) { limit = 1; // the collector does not alow numHits = 0 } topN = Math.min(topN, limit); final TopFieldCollector hitCollector = TopFieldCollector.create(sort, topN, after, true, doDocScores, doMaxScore); DrillSidewaysResult r = search(query, hitCollector); return new DrillSidewaysResult(r.facets, hitCollector.topDocs()); } else { return search(after, query, topN); } }
return new SearchResults(query, tfc.topDocs().scoreDocs, tfc.getTotalHits(), paging, io, searcher); } catch (IOException e) { io.releaseSearcher(searcher);
return collector.topDocs();
return collector.topDocs();