Class TopDocs

java.lang.Object
org.apache.lucene.search.TopDocs
Direct Known Subclasses:
TopFieldDocs, TopSuggestDocs

public class TopDocs extends Object
Represents hits returned by IndexSearcher.search(Query,int).
  • Field Details

    • totalHits

      public TotalHits totalHits
      The total number of hits for the query.
    • scoreDocs

      public ScoreDoc[] scoreDocs
      The top hits for the query.
    • SHARD_INDEX_TIE_BREAKER

      private static final Comparator<ScoreDoc> SHARD_INDEX_TIE_BREAKER
      Internal comparator with shardIndex
    • DOC_ID_TIE_BREAKER

      private static final Comparator<ScoreDoc> DOC_ID_TIE_BREAKER
      Internal comparator with docID
    • DEFAULT_TIE_BREAKER

      private static final Comparator<ScoreDoc> DEFAULT_TIE_BREAKER
      Default comparator
  • Constructor Details

    • TopDocs

      public TopDocs(TotalHits totalHits, ScoreDoc[] scoreDocs)
      Constructs a TopDocs.
  • Method Details

    • tieBreakLessThan

      static boolean tieBreakLessThan(TopDocs.ShardRef first, ScoreDoc firstDoc, TopDocs.ShardRef second, ScoreDoc secondDoc, Comparator<ScoreDoc> tieBreaker)
      Use the tie breaker if provided. If tie breaker returns 0 signifying equal values, we use hit indices to tie break intra shard ties
    • merge

      public static TopDocs merge(int topN, TopDocs[] shardHits)
      Returns a new TopDocs, containing topN results across the provided TopDocs, sorting by score. Each TopDocs instance must be sorted.
      See Also:
    • merge

      public static TopDocs merge(int start, int topN, TopDocs[] shardHits)
      Same as merge(int, TopDocs[]) but also ignores the top start top docs. This is typically useful for pagination.

      docIDs are expected to be in consistent pattern i.e. either all ScoreDocs have their shardIndex set, or all have them as -1 (signifying that all hits belong to same searcher)

    • merge

      public static TopDocs merge(int start, int topN, TopDocs[] shardHits, Comparator<ScoreDoc> tieBreaker)
      Same as above, but accepts the passed in tie breaker

      docIDs are expected to be in consistent pattern i.e. either all ScoreDocs have their shardIndex set, or all have them as -1 (signifying that all hits belong to same searcher)

    • merge

      public static TopFieldDocs merge(Sort sort, int topN, TopFieldDocs[] shardHits)
      Returns a new TopFieldDocs, containing topN results across the provided TopFieldDocs, sorting by the specified Sort. Each of the TopDocs must have been sorted by the same Sort, and sort field values must have been filled (ie, fillFields=true must be passed to TopFieldCollector.create(org.apache.lucene.search.Sort, int, int)).
      See Also:
    • merge

      public static TopFieldDocs merge(Sort sort, int start, int topN, TopFieldDocs[] shardHits)
      Same as merge(Sort, int, TopFieldDocs[]) but also ignores the top start top docs. This is typically useful for pagination.

      docIDs are expected to be in consistent pattern i.e. either all ScoreDocs have their shardIndex set, or all have them as -1 (signifying that all hits belong to same searcher)

    • merge

      public static TopFieldDocs merge(Sort sort, int start, int topN, TopFieldDocs[] shardHits, Comparator<ScoreDoc> tieBreaker)
      Pass in a custom tie breaker for ordering results
    • mergeAux

      private static TopDocs mergeAux(Sort sort, int start, int size, TopDocs[] shardHits, Comparator<ScoreDoc> tieBreaker)
      Auxiliary method used by the merge(int, org.apache.lucene.search.TopDocs[]) impls. A sort value of null is used to indicate that docs should be sorted by score.