Package org.apache.lucene.search
Class TopDocs
- 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
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static TopDocs
merge(int start, int topN, TopDocs[] shardHits, boolean setShardIndex)
Same asmerge(int, TopDocs[])
but also ignores the topstart
top docs.static 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, boolean setShardIndex)
Same asmerge(Sort, int, TopFieldDocs[])
but also ignores the topstart
top docs.static 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, boolean setShardIndex)
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)
if we need to tie-break since score / sort value are the same we first compare shard index (lower shard wins) and then iff shard index is the same we use the hit index.
-
-
-
Method Detail
-
tieBreakLessThan
static boolean tieBreakLessThan(TopDocs.ShardRef first, ScoreDoc firstDoc, TopDocs.ShardRef second, ScoreDoc secondDoc)
if we need to tie-break since score / sort value are the same we first compare shard index (lower shard wins) and then iff shard index is the same we use the hit index.
-
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[], boolean)
-
merge
public static TopDocs merge(int start, int topN, TopDocs[] shardHits, boolean setShardIndex)
Same asmerge(int, TopDocs[])
but also ignores the topstart
top docs. This is typically useful for pagination. Note: IfsetShardIndex
is true, this method will assume the incoming order ofshardHits
reflects each shard's index and will fill theScoreDoc.shardIndex
, otherwise it must already be set for all incomingScoreDoc
s, which can be useful when doing multiple reductions (merges) of TopDocs.
-
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)
).
-
merge
public static TopFieldDocs merge(Sort sort, int start, int topN, TopFieldDocs[] shardHits, boolean setShardIndex)
Same asmerge(Sort, int, TopFieldDocs[])
but also ignores the topstart
top docs. This is typically useful for pagination. Note: IfsetShardIndex
is true, this method will assume the incoming order ofshardHits
reflects each shard's index and will fill theScoreDoc.shardIndex
, otherwise it must already be set for all incomingScoreDoc
s, which can be useful when doing multiple reductions (merges) of TopDocs.
-
mergeAux
private static TopDocs mergeAux(Sort sort, int start, int size, TopDocs[] shardHits, boolean setShardIndex)
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.
-
-