Package org.apache.lucene.search

Examples of org.apache.lucene.search.TopFieldCollector$OutOfOrderMultiComparatorScoringMaxScoreCollector


      final Sort sort = new Sort(new SortField("ndv2", SortField.Type.LONG, false));
      final boolean fillFields = random().nextBoolean();
      final boolean trackDocScores = random().nextBoolean();
      final boolean trackMaxScore = random().nextBoolean();
      final boolean inOrder = random().nextBoolean();
      final TopFieldCollector collector1 = TopFieldCollector.create(sort, numHits, fillFields, trackDocScores, trackMaxScore, inOrder);
      final TopFieldCollector collector2 = TopFieldCollector.create(sort, numHits, fillFields, trackDocScores, trackMaxScore, inOrder);
     
      final Query query;
      if (random().nextBoolean()) {
        query = new TermQuery(new Term("s", RandomPicks.randomFrom(random(), terms)));
      } else {
        query = new MatchAllDocsQuery();
      }
      searcher.search(query, collector1);
      Sort different = new Sort(new SortField("ndv2", SortField.Type.LONG));
      searcher.search(query, new EarlyTerminatingSortingCollector(collector2, different, numHits) {
        @Override
        public void setNextReader(AtomicReaderContext context) throws IOException {
          super.setNextReader(context);
          assertFalse("segment should not be recognized as sorted as different sorter was used", segmentSorted);
        }
      });
      assertTrue(collector1.getTotalHits() >= collector2.getTotalHits());
      assertTopDocsEquals(collector1.topDocs().scoreDocs, collector2.topDocs().scoreDocs);
    }
    closeIndex();
  }
View Full Code Here


    Query finalQuery = finishQuery(query, allTermsRequired);

    //System.out.println("finalQuery=" + query);

    // Sort by weight, descending:
    TopFieldCollector c = TopFieldCollector.create(SORT, num, true, false, false, false);

    // We sorted postings by weight during indexing, so we
    // only retrieve the first num hits now:
    Collector c2 = new EarlyTerminatingSortingCollector(c, SORT, num);
    IndexSearcher searcher = searcherMgr.acquire();
    List<LookupResult> results = null;
    try {
      //System.out.println("got searcher=" + searcher);
      searcher.search(finalQuery, c2);

      TopFieldDocs hits = (TopFieldDocs) c.topDocs();

      // Slower way if postings are not pre-sorted by weight:
      // hits = searcher.search(query, null, num, SORT);
      results = createResults(searcher, hits, num, key, doHighlight, matchedTokens, prefixToken);
    } finally {
View Full Code Here

    }

    //-------------------------------< internal >-------------------------------

    private void getHits() throws IOException {
        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;
        log.debug("getHits() {}/{}", scoreDocs.length, numHits);
        // double hits for next round
        numHits *= 2;
    }
View Full Code Here

      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,
                                                                      true);
      DrillSidewaysResult r = search(query, hitCollector, fsp);
      return new DrillSidewaysResult(r.facetResults, hitCollector.topDocs());
    } else {
      return search(after, query, topN, fsp);
    }
  }
View Full Code Here

        }
       
        try {
          IndexSearcher searcher = new IndexSearcher(reader);
          Sort sort = new Sort(new SortField[] {SortField.FIELD_DOC});
          TopFieldCollector collector = TopFieldCollector.create(
              sort, offset + limit, false, false, false, true);
          // TODO Investigate use of searchAfter
          searcher.search(convertToQuery(restrictions), collector);
          List<LogEntry> result = new LinkedList<LogEntry>();
          collectHits(searcher, collector.topDocs(offset), log.getDialect(), result);
          return new ResultPage(result, offset, collector.getTotalHits());
        } catch (IOException e) {
          // Unexpected exception; wrap with CoreException
          throw new CoreException(new Status(IStatus.ERROR, IndexPlugin.PLUGIN_ID,
              NLS.bind(Messages.LuceneIndexService_error_failedToReadIndex,
                  new Object[] {log.getName(), e.getLocalizedMessage()}), e));
View Full Code Here

                                    boolean doMaxScore, FacetSearchParams fsp) throws IOException {
    if (filter != null) {
      query = new DrillDownQuery(filter, query);
    }
    if (sort != null) {
      final TopFieldCollector hitCollector = TopFieldCollector.create(sort,
                                                                      Math.min(topN, searcher.getIndexReader().maxDoc()),
                                                                      after,
                                                                      true,
                                                                      doDocScores,
                                                                      doMaxScore,
                                                                      true);
      DrillSidewaysResult r = search(query, hitCollector, fsp);
      r.hits = hitCollector.topDocs();
      return r;
    } else {
      return search(after, query, topN, fsp);
    }
  }
View Full Code Here

      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,
                                                                      true);
      DrillSidewaysResult r = search(query, hitCollector);
      return new DrillSidewaysResult(r.facets, hitCollector.topDocs());
    } else {
      return search(after, query, topN);
    }
  }
View Full Code Here

    final Sort sort = new Sort(new SortField("ndv1", SortField.Type.LONG, false));
    final boolean fillFields = random().nextBoolean();
    final boolean trackDocScores = random().nextBoolean();
    final boolean trackMaxScore = random().nextBoolean();
    final boolean inOrder = random().nextBoolean();
    final TopFieldCollector collector1 = TopFieldCollector.create(sort, numHits, fillFields, trackDocScores, trackMaxScore, inOrder);
    final TopFieldCollector collector2 = TopFieldCollector.create(sort, numHits, fillFields, trackDocScores, trackMaxScore, inOrder);

    final IndexSearcher searcher = newSearcher(reader);
    final int iters = atLeast(5);
    for (int i = 0; i < iters; ++i) {
      final TermQuery query = new TermQuery(new Term("s", RandomPicks.randomFrom(random(), terms)));
      searcher.search(query, collector1);
      searcher.search(query, new EarlyTerminatingSortingCollector(collector2, sort, numHits));
    }
    assertTrue(collector1.getTotalHits() >= collector2.getTotalHits());
    assertTopDocsEquals(collector1.topDocs().scoreDocs, collector2.topDocs().scoreDocs);
  }
View Full Code Here

    final Sort sort = new Sort(new SortField("ndv2", SortField.Type.LONG, false));
    final boolean fillFields = random().nextBoolean();
    final boolean trackDocScores = random().nextBoolean();
    final boolean trackMaxScore = random().nextBoolean();
    final boolean inOrder = random().nextBoolean();
    final TopFieldCollector collector1 = TopFieldCollector.create(sort, numHits, fillFields, trackDocScores, trackMaxScore, inOrder);
    final TopFieldCollector collector2 = TopFieldCollector.create(sort, numHits, fillFields, trackDocScores, trackMaxScore, inOrder);
   
    final IndexSearcher searcher = newSearcher(reader);
    final int iters = atLeast(5);
    for (int i = 0; i < iters; ++i) {
      final TermQuery query = new TermQuery(new Term("s", RandomPicks.randomFrom(random(), terms)));
      searcher.search(query, collector1);
      Sort different = new Sort(new SortField("ndv2", SortField.Type.LONG));
      searcher.search(query, new EarlyTerminatingSortingCollector(collector2, different, numHits) {
        @Override
        public void setNextReader(AtomicReaderContext context) throws IOException {
          super.setNextReader(context);
          assertFalse("segment should not be recognized as sorted as different sorter was used", segmentSorted);
        }
      });
    }
    assertTrue(collector1.getTotalHits() >= collector2.getTotalHits());
    assertTopDocsEquals(collector1.topDocs().scoreDocs, collector2.topDocs().scoreDocs);
  }
View Full Code Here

      final int numHits = numHits();
      if (numHits > 0) {
        if (sort != null) {
          // TODO: change the following to create TFC with in/out-of order
          // according to whether the query's Scorer.
          TopFieldCollector collector = TopFieldCollector.create(sort, numHits,
              true, withScore(), withMaxScore(), false);
          searcher.search(q, collector);
          hits = collector.topDocs();
        } else {
          hits = searcher.search(q, numHits);
        }
        //System.out.println("q=" + q + ":" + hits.totalHits + " total hits");
View Full Code Here

TOP

Related Classes of org.apache.lucene.search.TopFieldCollector$OutOfOrderMultiComparatorScoringMaxScoreCollector

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.