jpountz commented on code in PR #15083: URL: https://github.com/apache/lucene/pull/15083#discussion_r2282235413
########## lucene/core/src/java/org/apache/lucene/index/DocValuesSkipper.java: ########## @@ -122,4 +123,61 @@ public final void advance(long minValue, long maxValue) throws IOException { advance(maxDocID + 1); } } + + /** + * Returns the minimum value for a field across all segments, or {@link Long#MIN_VALUE} if not + * available + * + * @param searcher a searcher over the index + * @param field the field to retrieve values for + */ + public static long globalMinValue(IndexSearcher searcher, String field) throws IOException { + long minValue = Long.MAX_VALUE; + for (LeafReaderContext ctx : searcher.getLeafContexts()) { + DocValuesSkipper skipper = ctx.reader().getDocValuesSkipper(field); + if (skipper == null) { + minValue = Long.MIN_VALUE; + } else { + minValue = Math.min(minValue, skipper.minValue()); + } + } + return minValue; + } Review Comment: If one segment doesn't have the given field (ie. no field info for the given field), then this will return MIN_VALUE. Should it skip such segments instead? (And likewise for globalMaxValue?) -- 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