@@ -121,7 +121,7 @@ public SearchResult<LogMessage> search(
121
121
122
122
if (howMany > 0 ) {
123
123
CollectorManager <TopFieldCollector , TopFieldDocs > topFieldCollector =
124
- buildTopFieldCollector (howMany );
124
+ buildTopFieldCollector (howMany , bucketCount > 0 );
125
125
MultiCollectorManager collectorManager = new MultiCollectorManager (topFieldCollector );
126
126
if (bucketCount > 0 ) {
127
127
collectorManager = new MultiCollectorManager (topFieldCollector , statsCollector );
@@ -178,10 +178,14 @@ private LogMessage buildLogMessage(IndexSearcher searcher, ScoreDoc hit) {
178
178
}
179
179
}
180
180
181
- private CollectorManager <TopFieldCollector , TopFieldDocs > buildTopFieldCollector (int howMany ) {
181
+ private CollectorManager <TopFieldCollector , TopFieldDocs > buildTopFieldCollector (
182
+ int howMany , boolean useMaxHitsThreshold ) {
182
183
if (howMany > 0 ) {
183
184
SortField sortField = new SortField (SystemField .TIME_SINCE_EPOCH .fieldName , Type .LONG , true );
184
- return TopFieldCollector .createSharedManager (new Sort (sortField ), howMany , null , howMany );
185
+ // if we need an accurate totalResults count then useMaxHitsThreshold should be true,
186
+ // otherwise false will allow the search to early exit
187
+ return TopFieldCollector .createSharedManager (
188
+ new Sort (sortField ), howMany , null , useMaxHitsThreshold ? Integer .MAX_VALUE : howMany );
185
189
} else {
186
190
return null ;
187
191
}
0 commit comments