Package org.apache.lucene.search
Class TopFieldCollector
java.lang.Object
org.apache.lucene.search.Collector
org.apache.lucene.search.TopDocsCollector<FieldValueHitQueue.Entry>
org.apache.lucene.search.TopFieldCollector
A
Collector that sorts by SortField using
FieldComparators.
See the create(org.apache.lucene.search.Sort, int, boolean, boolean, boolean, boolean) method
for instantiating a TopFieldCollector.-
Field Summary
Fields inherited from class org.apache.lucene.search.TopDocsCollector
EMPTY_TOPDOCS, pq, totalHits -
Method Summary
Modifier and TypeMethodDescriptionbooleanReturntrueif this collector does not require the matching docIDs to be delivered in int sort order (smallest to largest) toCollector.collect(int).static TopFieldCollectorcreate(Sort sort, int numHits, boolean fillFields, boolean trackDocScores, boolean trackMaxScore, boolean docsScoredInOrder) Creates a newTopFieldCollectorfrom the given arguments.static TopFieldCollectorcreate(Sort sort, int numHits, FieldDoc after, boolean fillFields, boolean trackDocScores, boolean trackMaxScore, boolean docsScoredInOrder) Creates a newTopFieldCollectorfrom the given arguments.protected TopDocsnewTopDocs(ScoreDoc[] results, int start) Returns aTopDocsinstance containing the given results.protected voidpopulateResults(ScoreDoc[] results, int howMany) Populates the results array with the ScoreDoc instances.Methods inherited from class org.apache.lucene.search.TopDocsCollector
getTotalHits, topDocs, topDocs, topDocs, topDocsSizeMethods inherited from class org.apache.lucene.search.Collector
collect, setNextReader, setScorer
-
Method Details
-
create
public static TopFieldCollector create(Sort sort, int numHits, boolean fillFields, boolean trackDocScores, boolean trackMaxScore, boolean docsScoredInOrder) throws IOException Creates a newTopFieldCollectorfrom the given arguments.NOTE: The instances returned by this method pre-allocate a full array of length
numHits.- Parameters:
sort- the sort criteria (SortFields).numHits- the number of results to collect.fillFields- specifies whether the actual field values should be returned on the results (FieldDoc).trackDocScores- specifies whether document scores should be tracked and set on the results. Note that if set to false, then the results' scores will be set to Float.NaN. Setting this to true affects performance, as it incurs the score computation on each competitive result. Therefore if document scores are not required by the application, it is recommended to set it to false.trackMaxScore- specifies whether the query's maxScore should be tracked and set on the resultingTopDocs. Note that if set to false,TopDocs.getMaxScore()returns Float.NaN. Setting this to true affects performance as it incurs the score computation on each result. Also, setting this true automatically setstrackDocScoresto true as well.docsScoredInOrder- specifies whether documents are scored in doc Id order or not by the givenScorerinCollector.setScorer(Scorer).- Returns:
- a
TopFieldCollectorinstance which will sort the results by the sort criteria. - Throws:
IOException- if there is a low-level I/O error
-
create
public static TopFieldCollector create(Sort sort, int numHits, FieldDoc after, boolean fillFields, boolean trackDocScores, boolean trackMaxScore, boolean docsScoredInOrder) throws IOException Creates a newTopFieldCollectorfrom the given arguments.NOTE: The instances returned by this method pre-allocate a full array of length
numHits.- Parameters:
sort- the sort criteria (SortFields).numHits- the number of results to collect.after- only hits after this FieldDoc will be collectedfillFields- specifies whether the actual field values should be returned on the results (FieldDoc).trackDocScores- specifies whether document scores should be tracked and set on the results. Note that if set to false, then the results' scores will be set to Float.NaN. Setting this to true affects performance, as it incurs the score computation on each competitive result. Therefore if document scores are not required by the application, it is recommended to set it to false.trackMaxScore- specifies whether the query's maxScore should be tracked and set on the resultingTopDocs. Note that if set to false,TopDocs.getMaxScore()returns Float.NaN. Setting this to true affects performance as it incurs the score computation on each result. Also, setting this true automatically setstrackDocScoresto true as well.docsScoredInOrder- specifies whether documents are scored in doc Id order or not by the givenScorerinCollector.setScorer(Scorer).- Returns:
- a
TopFieldCollectorinstance which will sort the results by the sort criteria. - Throws:
IOException- if there is a low-level I/O error
-
populateResults
Description copied from class:TopDocsCollectorPopulates the results array with the ScoreDoc instances. This can be overridden in case a different ScoreDoc type should be returned.- Overrides:
populateResultsin classTopDocsCollector<FieldValueHitQueue.Entry>
-
newTopDocs
Description copied from class:TopDocsCollectorReturns aTopDocsinstance containing the given results. Ifresultsis null it means there are no results to return, either because there were 0 calls to collect() or because the arguments to topDocs were invalid.- Overrides:
newTopDocsin classTopDocsCollector<FieldValueHitQueue.Entry>
-
acceptsDocsOutOfOrder
public boolean acceptsDocsOutOfOrder()Description copied from class:CollectorReturntrueif this collector does not require the matching docIDs to be delivered in int sort order (smallest to largest) toCollector.collect(int).Most Lucene Query implementations will visit matching docIDs in order. However, some queries (currently limited to certain cases of
BooleanQuery) can achieve faster searching if theCollectorallows them to deliver the docIDs out of order.Many collectors don't mind getting docIDs out of order, so it's important to return
truehere.- Specified by:
acceptsDocsOutOfOrderin classCollector
-