mikemccand commented on a change in pull request #823: LUCENE-8939: Introduce Shared Count Early Termination In Parallel Search URL: https://github.com/apache/lucene-solr/pull/823#discussion_r320305075
########## File path: lucene/core/src/java/org/apache/lucene/search/TopFieldCollector.java ########## @@ -410,10 +423,34 @@ public static TopFieldCollector create(Sort sort, int numHits, FieldDoc after, throw new IllegalArgumentException("after.fields has " + after.fields.length + " values but sort has " + sort.getSort().length); } - return new PagingFieldCollector(sort, queue, after, numHits, totalHitsThreshold); + return new PagingFieldCollector(sort, queue, after, numHits, hitsThresholdChecker); } } + /** + * Create a CollectorManager which uses a shared hit counter to maintain number of hits + */ + public static CollectorManager<TopFieldCollector, TopFieldDocs> createSharedManager(Sort sort, int numHits, FieldDoc after, + int totalHitsThreshold) { + return new CollectorManager<>() { + + @Override + public TopFieldCollector newCollector() throws IOException { + return create(sort, numHits, after, HitsThresholdChecker.createShared(totalHitsThreshold)); Review comment: Shouldn't we create the shared `HitsThresholdChecker` up front (at the top of the `createSharedManager` method), not here? Else we are making a new shared instance for every segment slice (searcher thread), instead of sharing a single one for the whole query? ---------------------------------------------------------------- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org With regards, Apache Git Services --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org For additional commands, e-mail: dev-h...@lucene.apache.org