public class TopDocs
extends java.lang.Object
IndexSearcher.search(Query,int)
.Modifier and Type | Class and Description |
---|---|
private static class |
TopDocs.MergeSortQueue |
private static class |
TopDocs.ScoreMergeSortQueue |
private static class |
TopDocs.ShardRef |
Modifier and Type | Field and Description |
---|---|
ScoreDoc[] |
scoreDocs
The top hits for the query.
|
TotalHits |
totalHits
The total number of hits for the query.
|
Constructor and Description |
---|
TopDocs(TotalHits totalHits,
ScoreDoc[] scoreDocs)
Constructs a TopDocs.
|
Modifier and Type | Method and Description |
---|---|
static TopDocs |
merge(int start,
int topN,
TopDocs[] shardHits,
boolean setShardIndex)
Same as
merge(int, TopDocs[]) but also ignores the top
start 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 as
merge(Sort, int, TopFieldDocs[]) but also ignores the top
start 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 specified
Sort . |
private static TopDocs |
mergeAux(Sort sort,
int start,
int size,
TopDocs[] shardHits,
boolean setShardIndex)
Auxiliary method used by the
merge(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.
|
public TotalHits totalHits
public ScoreDoc[] scoreDocs
static boolean tieBreakLessThan(TopDocs.ShardRef first, ScoreDoc firstDoc, TopDocs.ShardRef second, ScoreDoc secondDoc)
public static TopDocs merge(int topN, TopDocs[] shardHits)
TopDocs
instance must be sorted.merge(int, int, TopDocs[], boolean)
public static TopDocs merge(int start, int topN, TopDocs[] shardHits, boolean setShardIndex)
merge(int, TopDocs[])
but also ignores the top
start
top docs. This is typically useful for pagination.
Note: If setShardIndex
is true, this method will assume the incoming order of shardHits
reflects
each shard's index and will fill the ScoreDoc.shardIndex
, otherwise
it must already be set for all incoming ScoreDoc
s, which can be useful when doing multiple reductions
(merges) of TopDocs.public static TopFieldDocs merge(Sort sort, int topN, TopFieldDocs[] shardHits)
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)
).public static TopFieldDocs merge(Sort sort, int start, int topN, TopFieldDocs[] shardHits, boolean setShardIndex)
merge(Sort, int, TopFieldDocs[])
but also ignores the top
start
top docs. This is typically useful for pagination.
Note: If setShardIndex
is true, this method will assume the incoming order of shardHits
reflects
each shard's index and will fill the ScoreDoc.shardIndex
, otherwise
it must already be set for all incoming ScoreDoc
s, which can be useful when doing multiple reductions
(merges) of TopDocs.private static TopDocs mergeAux(Sort sort, int start, int size, TopDocs[] shardHits, boolean setShardIndex)
merge(int, org.apache.lucene.search.TopDocs[])
impls. A sort value of null
is used to indicate that docs should be sorted by score.