You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by jp...@apache.org on 2023/11/18 07:23:34 UTC

(lucene) 01/02: Remove delayed seek optimization. (#12815)

This is an automated email from the ASF dual-hosted git repository.

jpountz pushed a commit to branch branch_9x
in repository https://gitbox.apache.org/repos/asf/lucene.git

commit faf7262ba8f8eed19cd430881e3841b574cf9324
Author: Adrien Grand <jp...@gmail.com>
AuthorDate: Sat Nov 18 08:11:07 2023 +0100

    Remove delayed seek optimization. (#12815)
    
    I think that this optimization was introduced because `advanceShallow` may
    advance skip lists and then never decode a block of postings. But actually
    `IndexInput#seek` is cheap, including on `NIOFSDirectory`. So let's seek
    immediately?
---
 .../codecs/lucene99/Lucene99PostingsReader.java    | 23 +++-------------------
 1 file changed, 3 insertions(+), 20 deletions(-)

diff --git a/lucene/core/src/java/org/apache/lucene/codecs/lucene99/Lucene99PostingsReader.java b/lucene/core/src/java/org/apache/lucene/codecs/lucene99/Lucene99PostingsReader.java
index 77e50e23ce8..5546039ae08 100644
--- a/lucene/core/src/java/org/apache/lucene/codecs/lucene99/Lucene99PostingsReader.java
+++ b/lucene/core/src/java/org/apache/lucene/codecs/lucene99/Lucene99PostingsReader.java
@@ -1073,8 +1073,6 @@ public final class Lucene99PostingsReader extends PostingsReaderBase {
 
     private int nextSkipDoc = -1;
 
-    private long seekTo = -1;
-
     // as we read freqBuffer lazily, isFreqsRead shows if freqBuffer are read for the current block
     // always true when we don't have freqBuffer (indexHasFreq=false) or don't need freqBuffer
     // (needsFreq=false)
@@ -1178,7 +1176,8 @@ public final class Lucene99PostingsReader extends PostingsReaderBase {
           // Force to read next block
           docBufferUpto = BLOCK_SIZE;
           accum = skipper.getDoc();
-          seekTo = skipper.getDocPointer(); // delay the seek
+          docIn.seek(skipper.getDocPointer());
+          isFreqsRead = true;
         }
         // next time we call advance, this is used to
         // foresee whether skipper is necessary.
@@ -1198,11 +1197,6 @@ public final class Lucene99PostingsReader extends PostingsReaderBase {
     @Override
     public int nextDoc() throws IOException {
       if (docBufferUpto == BLOCK_SIZE) {
-        if (seekTo >= 0) {
-          docIn.seek(seekTo);
-          isFreqsRead = true; // reset isFreqsRead
-          seekTo = -1;
-        }
         refillDocs();
       }
       return this.doc = (int) docBuffer[docBufferUpto++];
@@ -1214,11 +1208,6 @@ public final class Lucene99PostingsReader extends PostingsReaderBase {
         advanceShallow(target);
       }
       if (docBufferUpto == BLOCK_SIZE) {
-        if (seekTo >= 0) {
-          docIn.seek(seekTo);
-          isFreqsRead = true; // reset isFreqsRead
-          seekTo = -1;
-        }
         refillDocs();
       }
 
@@ -1307,8 +1296,6 @@ public final class Lucene99PostingsReader extends PostingsReaderBase {
 
     private int nextSkipDoc = -1;
 
-    private long seekTo = -1;
-
     public BlockImpactsPostingsEnum(FieldInfo fieldInfo, IntBlockTermState termState)
         throws IOException {
       indexHasOffsets =
@@ -1426,7 +1413,7 @@ public final class Lucene99PostingsReader extends PostingsReaderBase {
           accum = skipper.getDoc();
           posPendingFP = skipper.getPosPointer();
           posPendingCount = skipper.getPosBufferUpto();
-          seekTo = skipper.getDocPointer(); // delay the seek
+          docIn.seek(skipper.getDocPointer());
         }
         // next time we call advance, this is used to
         // foresee whether skipper is necessary.
@@ -1452,10 +1439,6 @@ public final class Lucene99PostingsReader extends PostingsReaderBase {
         advanceShallow(target);
       }
       if (docBufferUpto == BLOCK_SIZE) {
-        if (seekTo >= 0) {
-          docIn.seek(seekTo);
-          seekTo = -1;
-        }
         refillDocs();
       }