- java.lang.Object
-
- org.apache.lucene.search.TopDocs
-
- Direct Known Subclasses:
TopFieldDocs
,TopSuggestDocs
public class TopDocs extends java.lang.Object
Represents hits returned byIndexSearcher.search(Query,int)
.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private static class
TopDocs.MergeSortQueue
private static class
TopDocs.ScoreMergeSortQueue
private static class
TopDocs.ShardRef
-
Field Summary
Fields Modifier and Type Field Description private static java.util.Comparator<ScoreDoc>
DEFAULT_TIE_BREAKER
Default comparatorprivate static java.util.Comparator<ScoreDoc>
DOC_ID_TIE_BREAKER
Internal comparator with docIDScoreDoc[]
scoreDocs
The top hits for the query.private static java.util.Comparator<ScoreDoc>
SHARD_INDEX_TIE_BREAKER
Internal comparator with shardIndexTotalHits
totalHits
The total number of hits for the query.
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static TopDocs
merge(int start, int topN, TopDocs[] shardHits)
Same asmerge(int, TopDocs[])
but also ignores the topstart
top docs.static TopDocs
merge(int start, int topN, TopDocs[] shardHits, java.util.Comparator<ScoreDoc> tieBreaker)
Same as above, but accepts the passed in tie breakerstatic TopDocs
merge(int topN, TopDocs[] shardHits)
Returns a new TopDocs, containing topN results across the provided TopDocs, sorting by score.static TopFieldDocs
merge(Sort sort, int start, int topN, TopFieldDocs[] shardHits)
Same asmerge(Sort, int, TopFieldDocs[])
but also ignores the topstart
top docs.static TopFieldDocs
merge(Sort sort, int start, int topN, TopFieldDocs[] shardHits, java.util.Comparator<ScoreDoc> tieBreaker)
Pass in a custom tie breaker for ordering resultsstatic TopFieldDocs
merge(Sort sort, int topN, TopFieldDocs[] shardHits)
Returns a new TopFieldDocs, containing topN results across the provided TopFieldDocs, sorting by the specifiedSort
.private static TopDocs
mergeAux(Sort sort, int start, int size, TopDocs[] shardHits, java.util.Comparator<ScoreDoc> tieBreaker)
Auxiliary method used by themerge(int, org.apache.lucene.search.TopDocs[])
impls.(package private) static boolean
tieBreakLessThan(TopDocs.ShardRef first, ScoreDoc firstDoc, TopDocs.ShardRef second, ScoreDoc secondDoc, java.util.Comparator<ScoreDoc> tieBreaker)
Use the tie breaker if provided.
-
-
-
Field Detail
-
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 java.util.Comparator<ScoreDoc> SHARD_INDEX_TIE_BREAKER
Internal comparator with shardIndex
-
DOC_ID_TIE_BREAKER
private static final java.util.Comparator<ScoreDoc> DOC_ID_TIE_BREAKER
Internal comparator with docID
-
DEFAULT_TIE_BREAKER
private static final java.util.Comparator<ScoreDoc> DEFAULT_TIE_BREAKER
Default comparator
-
-
Method Detail
-
tieBreakLessThan
static boolean tieBreakLessThan(TopDocs.ShardRef first, ScoreDoc firstDoc, TopDocs.ShardRef second, ScoreDoc secondDoc, java.util.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. EachTopDocs
instance must be sorted.- See Also:
merge(int, int, TopDocs[])
-
merge
public static TopDocs merge(int start, int topN, TopDocs[] shardHits)
Same asmerge(int, TopDocs[])
but also ignores the topstart
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, java.util.Comparator<ScoreDoc> tieBreaker)
Same as above, but accepts the passed in tie breakerdocIDs 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 specifiedSort
. 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 toTopFieldCollector.create(org.apache.lucene.search.Sort, int, int)
).- See Also:
merge(Sort, int, int, TopFieldDocs[])
-
merge
public static TopFieldDocs merge(Sort sort, int start, int topN, TopFieldDocs[] shardHits)
Same asmerge(Sort, int, TopFieldDocs[])
but also ignores the topstart
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, java.util.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, java.util.Comparator<ScoreDoc> tieBreaker)
Auxiliary method used by themerge(int, org.apache.lucene.search.TopDocs[])
impls. A sort value of null is used to indicate that docs should be sorted by score.
-
-