ChrisHegarty commented on code in PR #13449: URL: https://github.com/apache/lucene/pull/13449#discussion_r1626571087
########## lucene/core/src/java/org/apache/lucene/index/DocValuesSkipper.java: ########## @@ -0,0 +1,95 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.lucene.index; + +import java.io.IOException; +import org.apache.lucene.search.DocIdSetIterator; + +/** Skipper for {@link DocValues}. */ +public abstract class DocValuesSkipper { Review Comment: I struggled with this interface initially, so I'll propose a few javadoc comments which I think should help. ``` * <p>A skipper has a position that can only be {@link #advance(int) advanced}. A skippers position, * along with a {@code level}, determines the interval at which the skipper is currently positioned. ``` ########## lucene/core/src/java/org/apache/lucene/index/DocValuesSkipper.java: ########## @@ -0,0 +1,95 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.lucene.index; + +import java.io.IOException; +import org.apache.lucene.search.DocIdSetIterator; + +/** Skipper for {@link DocValues}. */ +public abstract class DocValuesSkipper { + + /** + * Advance this skipper so that all levels contain the next document on or after {@code target}. + * + * <p><b>NOTE</b>: The behavior is undefined if {@code target} is less than or equal to {@code + * maxDocID(0)}. + * + * <p><b>NOTE</b>: {@code minDocID(0)} may return a doc ID that is greater than {@code target} if + * the target document doesn't have a value. + */ + public abstract void advance(int target) throws IOException; + + /** Return the number of levels. This number may change when moving to a different interval. */ + public abstract int numLevels(); + + /** + * Return the minimum doc ID on the given level, inclusive. This returns {@code -1} if {@link + * #advance(int)} has not been called yet and {@link DocIdSetIterator#NO_MORE_DOCS} if the + * iterator is exhausted. This method is non-increasing when {@code level} increases. Said + * otherwise {@code minDocID(level+1) <= minDocId(level)}. + */ + public abstract int minDocID(int level); + + /** + * Return the maximum doc ID on the given level, inclusive. This returns {@code -1} if {@link + * #advance(int)} has not been called yet and {@link DocIdSetIterator#NO_MORE_DOCS} if the + * iterator is exhausted. This method is non-decreasing when {@code level} decreases. Said + * otherwise {@code maxDocID(level+1) >= maxDocId(level)}. + */ + public abstract int maxDocID(int level); + + /** + * Return the minimum value at the given level, inclusive. + * + * <p><b>NOTE</b>: It is only guaranteed that values in this interval are greater than or equal + * the returned value. There is no guarantee that one document actually has this value. + */ + public abstract long minValue(int level); + + /** + * Return the maximum value at the given level, inclusive. Review Comment: same - ".. of the internal .. " ########## lucene/core/src/java/org/apache/lucene/index/DocValuesSkipper.java: ########## @@ -0,0 +1,95 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.lucene.index; + +import java.io.IOException; +import org.apache.lucene.search.DocIdSetIterator; + +/** Skipper for {@link DocValues}. */ +public abstract class DocValuesSkipper { + + /** + * Advance this skipper so that all levels contain the next document on or after {@code target}. + * + * <p><b>NOTE</b>: The behavior is undefined if {@code target} is less than or equal to {@code + * maxDocID(0)}. + * + * <p><b>NOTE</b>: {@code minDocID(0)} may return a doc ID that is greater than {@code target} if + * the target document doesn't have a value. + */ + public abstract void advance(int target) throws IOException; + + /** Return the number of levels. This number may change when moving to a different interval. */ + public abstract int numLevels(); + + /** + * Return the minimum doc ID on the given level, inclusive. This returns {@code -1} if {@link Review Comment: ``` Return the minimum doc ID of the interval at the given level, inclusive. ``` ########## lucene/core/src/java/org/apache/lucene/index/DocValuesSkipper.java: ########## @@ -0,0 +1,95 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.lucene.index; + +import java.io.IOException; +import org.apache.lucene.search.DocIdSetIterator; + +/** Skipper for {@link DocValues}. */ +public abstract class DocValuesSkipper { + + /** + * Advance this skipper so that all levels contain the next document on or after {@code target}. + * + * <p><b>NOTE</b>: The behavior is undefined if {@code target} is less than or equal to {@code + * maxDocID(0)}. + * + * <p><b>NOTE</b>: {@code minDocID(0)} may return a doc ID that is greater than {@code target} if + * the target document doesn't have a value. + */ + public abstract void advance(int target) throws IOException; + + /** Return the number of levels. This number may change when moving to a different interval. */ + public abstract int numLevels(); + + /** + * Return the minimum doc ID on the given level, inclusive. This returns {@code -1} if {@link + * #advance(int)} has not been called yet and {@link DocIdSetIterator#NO_MORE_DOCS} if the + * iterator is exhausted. This method is non-increasing when {@code level} increases. Said + * otherwise {@code minDocID(level+1) <= minDocId(level)}. + */ + public abstract int minDocID(int level); + + /** + * Return the maximum doc ID on the given level, inclusive. This returns {@code -1} if {@link + * #advance(int)} has not been called yet and {@link DocIdSetIterator#NO_MORE_DOCS} if the + * iterator is exhausted. This method is non-decreasing when {@code level} decreases. Said + * otherwise {@code maxDocID(level+1) >= maxDocId(level)}. + */ + public abstract int maxDocID(int level); + + /** + * Return the minimum value at the given level, inclusive. Review Comment: same - ".. of the internal .. " ########## lucene/core/src/java/org/apache/lucene/index/DocValuesSkipper.java: ########## @@ -0,0 +1,95 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.lucene.index; + +import java.io.IOException; +import org.apache.lucene.search.DocIdSetIterator; + +/** Skipper for {@link DocValues}. */ +public abstract class DocValuesSkipper { + + /** + * Advance this skipper so that all levels contain the next document on or after {@code target}. + * + * <p><b>NOTE</b>: The behavior is undefined if {@code target} is less than or equal to {@code + * maxDocID(0)}. + * + * <p><b>NOTE</b>: {@code minDocID(0)} may return a doc ID that is greater than {@code target} if + * the target document doesn't have a value. + */ + public abstract void advance(int target) throws IOException; + + /** Return the number of levels. This number may change when moving to a different interval. */ + public abstract int numLevels(); + + /** + * Return the minimum doc ID on the given level, inclusive. This returns {@code -1} if {@link + * #advance(int)} has not been called yet and {@link DocIdSetIterator#NO_MORE_DOCS} if the + * iterator is exhausted. This method is non-increasing when {@code level} increases. Said + * otherwise {@code minDocID(level+1) <= minDocId(level)}. + */ + public abstract int minDocID(int level); + + /** + * Return the maximum doc ID on the given level, inclusive. This returns {@code -1} if {@link Review Comment: ``` Return the maximum doc ID of the interval on the given level, inclusive. ``` -- 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