@@ -220,8 +220,6 @@ static CollectorManager<Collector, QueryPhaseResult> createQueryPhaseCollectorMa
220
220
);
221
221
final IndexReader reader = searchContext .searcher ().getIndexReader ();
222
222
final Query query = searchContext .rewrittenQuery ();
223
- // top collectors don't like a size of 0
224
- final int totalNumDocs = Math .max (1 , reader .numDocs ());
225
223
if (searchContext .size () == 0 ) {
226
224
return new EmptyHits (
227
225
postFilterWeight ,
@@ -232,31 +230,10 @@ static CollectorManager<Collector, QueryPhaseResult> createQueryPhaseCollectorMa
232
230
searchContext .sort (),
233
231
searchContext .trackTotalHitsUpTo ()
234
232
);
235
- } else if (searchContext .scrollContext () != null ) {
236
- // we can disable the tracking of total hits after the initial scroll query
237
- // since the total hits is preserved in the scroll context.
238
- int trackTotalHitsUpTo = searchContext .scrollContext ().totalHits != null
239
- ? SearchContext .TRACK_TOTAL_HITS_DISABLED
240
- : SearchContext .TRACK_TOTAL_HITS_ACCURATE ;
241
- // no matter what the value of from is
242
- int numDocs = Math .min (searchContext .size (), totalNumDocs );
243
- return forScroll (
244
- postFilterWeight ,
245
- terminateAfterChecker ,
246
- aggsCollectorManager ,
247
- searchContext .minimumScore (),
248
- searchContext .getProfilers () != null ,
249
- reader ,
250
- query ,
251
- searchContext .sort (),
252
- numDocs ,
253
- searchContext .trackScores (),
254
- trackTotalHitsUpTo ,
255
- hasFilterCollector ,
256
- searchContext .scrollContext (),
257
- searchContext .numberOfShards ()
258
- );
259
- } else {
233
+ }
234
+ // top collectors don't like a size of 0
235
+ final int totalNumDocs = Math .max (1 , reader .numDocs ());
236
+ if (searchContext .scrollContext () == null ) {
260
237
int numDocs = Math .min (searchContext .from () + searchContext .size (), totalNumDocs );
261
238
final boolean rescore = searchContext .rescore ().isEmpty () == false ;
262
239
if (rescore ) {
@@ -265,38 +242,61 @@ static CollectorManager<Collector, QueryPhaseResult> createQueryPhaseCollectorMa
265
242
numDocs = Math .max (numDocs , rescoreContext .getWindowSize ());
266
243
}
267
244
}
268
- if (searchContext .collapse () != null ) {
269
- boolean trackScores = searchContext .sort () == null || searchContext .trackScores ();
270
- return forCollapsing (
245
+ if (searchContext .collapse () == null ) {
246
+ return new WithHits (
271
247
postFilterWeight ,
272
248
terminateAfterChecker ,
273
249
aggsCollectorManager ,
274
250
searchContext .minimumScore (),
275
251
searchContext .getProfilers () != null ,
276
- searchContext .collapse (),
252
+ reader ,
253
+ query ,
277
254
searchContext .sort (),
255
+ searchContext .searchAfter (),
278
256
numDocs ,
279
- trackScores ,
280
- searchContext .searchAfter ()
257
+ searchContext .trackScores (),
258
+ searchContext .trackTotalHitsUpTo (),
259
+ hasFilterCollector
281
260
);
282
261
} else {
283
- return new WithHits (
262
+ boolean trackScores = searchContext .sort () == null || searchContext .trackScores ();
263
+ return forCollapsing (
284
264
postFilterWeight ,
285
265
terminateAfterChecker ,
286
266
aggsCollectorManager ,
287
267
searchContext .minimumScore (),
288
268
searchContext .getProfilers () != null ,
289
- reader ,
290
- query ,
269
+ searchContext .collapse (),
291
270
searchContext .sort (),
292
- searchContext .searchAfter (),
293
271
numDocs ,
294
- searchContext .trackScores (),
295
- searchContext .trackTotalHitsUpTo (),
296
- hasFilterCollector
272
+ trackScores ,
273
+ searchContext .searchAfter ()
297
274
);
298
275
}
299
276
}
277
+ // we can disable the tracking of total hits after the initial scroll query
278
+ // since the total hits is preserved in the scroll context.
279
+ int trackTotalHitsUpTo = searchContext .scrollContext ().totalHits != null
280
+ ? SearchContext .TRACK_TOTAL_HITS_DISABLED
281
+ : SearchContext .TRACK_TOTAL_HITS_ACCURATE ;
282
+ // no matter what the value of from is
283
+ int numDocs = Math .min (searchContext .size (), totalNumDocs );
284
+ return forScroll (
285
+ postFilterWeight ,
286
+ terminateAfterChecker ,
287
+ aggsCollectorManager ,
288
+ searchContext .minimumScore (),
289
+ searchContext .getProfilers () != null ,
290
+ reader ,
291
+ query ,
292
+ searchContext .sort (),
293
+ numDocs ,
294
+ searchContext .trackScores (),
295
+ trackTotalHitsUpTo ,
296
+ hasFilterCollector ,
297
+ searchContext .scrollContext (),
298
+ searchContext .numberOfShards ()
299
+ );
300
300
}
301
301
302
302
/**
0 commit comments