mikemccand commented on code in PR #13542: URL: https://github.com/apache/lucene/pull/13542#discussion_r1666772840
########## lucene/core/src/java/org/apache/lucene/search/IndexSearcher.java: ########## @@ -328,42 +336,65 @@ protected LeafSlice[] slices(List<LeafReaderContext> leaves) { /** Static method to segregate LeafReaderContexts amongst multiple slices */ public static LeafSlice[] slices( List<LeafReaderContext> leaves, int maxDocsPerSlice, int maxSegmentsPerSlice) { + + // TODO this is a temporary hack to force testing against multiple leaf reader context slices. + // It must be reverted before merging. + maxDocsPerSlice = 1; + maxSegmentsPerSlice = 1; + // end hack + // Make a copy so we can sort: List<LeafReaderContext> sortedLeaves = new ArrayList<>(leaves); // Sort by maxDoc, descending: - Collections.sort( - sortedLeaves, Collections.reverseOrder(Comparator.comparingInt(l -> l.reader().maxDoc()))); + sortedLeaves.sort(Collections.reverseOrder(Comparator.comparingInt(l -> l.reader().maxDoc()))); - final List<List<LeafReaderContext>> groupedLeaves = new ArrayList<>(); - long docSum = 0; - List<LeafReaderContext> group = null; + final List<List<LeafReaderContextPartition>> groupedLeafPartitions = new ArrayList<>(); + int currentSliceNumDocs = 0; + List<LeafReaderContextPartition> group = null; for (LeafReaderContext ctx : sortedLeaves) { if (ctx.reader().maxDoc() > maxDocsPerSlice) { assert group == null; - groupedLeaves.add(Collections.singletonList(ctx)); + // if the segment does not fit in a single slice, we split it in multiple partitions of Review Comment: I'm confused by the slice vs partition terminology (sorry -- I have not yet looked at the code changes!). Are we aiming to replace the notion of slices (what `IndexSearcher` implements today) with partitions? In which case, it does seem important that a partition should support putting N small segments together into a single quanta (one work unit for the searcher thread). Or, will we keep the notion of a slice, and it's a list of partitions in a single quanta, in which case slices append multiple (small) things (partitions) together, while partitions break up a single big segment. -- 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