zhaih commented on code in PR #12555:
URL: https://github.com/apache/lucene/pull/12555#discussion_r1326538550
##########
lucene/core/src/java/org/apache/lucene/codecs/lucene90/Lucene90DocValuesProducer.java:
##########
@@ -1205,7 +1205,15 @@ public SeekStatus seekCeil(BytesRef text) throws
IOException {
ord = 0;
return SeekStatus.END;
} else {
- seekExact(0L);
+ // seekBlock doesn't update ord and it repositions bytes when calls
getFirstTermFromBlock
Review Comment:
So, I think the ultimate reason might be previously when we call
`seekExact(0)`, this if condition is not true, and thus the `bytes` and `ord`
are not reset correctly.
```
if (ord < this.ord || blockIndex != currentBlockIndex) {
// The looked up ord is before the current ord or belongs to a
different block, seek again
final long blockAddress = blockAddresses.get(blockIndex);
bytes.seek(blockAddress);
this.ord = (blockIndex << TERMS_DICT_BLOCK_LZ4_SHIFT) - 1;
}
```
So I would prefer we do
```
ord = 1; // Probably need to add some comments on why we do this weird thing
seekExact(0L);
```
Instead of doing it manually here in case we're changing the seek behavior
in the future.
--
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: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]