mikemccand commented on code in PR #13542:
URL: https://github.com/apache/lucene/pull/13542#discussion_r1751974584


##########
lucene/core/src/java/org/apache/lucene/search/TotalHitCountCollectorManager.java:
##########
@@ -28,17 +36,114 @@
  */
 public class TotalHitCountCollectorManager
     implements CollectorManager<TotalHitCountCollector, Integer> {
+
+  private final boolean hasSegmentPartitions;
+
+  /**
+   * Creates a new total hit count collector manager. The collectors returned 
by {@link
+   * #newCollector()} don't support intra-segment concurrency. Use the other 
constructor if segments
+   * partitions are being searched.
+   */
+  public TotalHitCountCollectorManager() {
+    this(false);
+  }
+
+  /**
+   * Creates a new total hit count collector manager, providing a flag that 
signals whether segment
+   * partitions are being searched, in which case the different collector need 
to share state to
+   * ensure consistent behaviour across partitions of the same segment. There 
are segment partitions
+   * when the {@link IndexSearcher#slices(List)} methods returns leaf slices 
that target leaf reader
+   * partitions.
+   *
+   * @see IndexSearcher#slices(List)
+   * @see org.apache.lucene.search.IndexSearcher.LeafReaderContextPartition
+   * @param hasSegmentPartitions whether the collector manager needs to create 
collectors that
+   *     support searching segment partitions in parallel (via intra-segment 
search concurrency)
+   */
+  public TotalHitCountCollectorManager(boolean hasSegmentPartitions) {

Review Comment:
   > I made the change to accept a `LeafSlice[]` in the constructor instead of 
a boolean. That feels more automatic, although not perfect :)
   
   I think this is better -- there is no more trap, since the 
`CollectorManager` now "does the right thing" if there are partitions in the 
`LeafSlice[]`, or not.
   
   We can improve it later (post 10.0.0) ... ideally, somehow, `IndexSearcher` 
would share the slices with the `CollectorManager` up front to inform it.  Or, 
we can optimize enough for the "might contain partitions" case and just use 
that code path always (better).  But let's not block this awesome first step 
with this "optimization drives API" wrinkle...



-- 
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.

To unsubscribe, e-mail: issues-unsubscr...@lucene.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscr...@lucene.apache.org
For additional commands, e-mail: issues-h...@lucene.apache.org

Reply via email to