Uploaded image for project: 'Lucene - Core'
  1. Lucene - Core
  2. LUCENE-1327

TermSpans skipTo() doesn't always move forwards

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Minor
    • Resolution: Fixed
    • Affects Version/s: 1.9, 2.0.0, 2.1, 2.2, 2.3, 2.3.1, 2.3.2, 2.4
    • Fix Version/s: 2.9
    • Labels:
      None

      Description

      In TermSpans (or the anonymous Spans class returned by SpansTermQuery, depending on the version), the skipTo() method is improperly implemented if the target doc is less than or equal to the current doc:

      public boolean skipTo(int target) throws IOException {
      // are we already at the correct position?
      if (doc >= target)

      { return true; }

      ...

      This violates the correct behavior (as described in the Spans interface documentation), that skipTo() should always move forwards, in other words the correct implementation would be:

      if (doc >= target) {
      return next();
      }

      This bug causes particular problems if one wants to use the payloads feature - this is because if one loads a payload, then performs a skipTo() to the same document, then tries to load the "next" payload, the spans hasn't changed position and it attempts to load the same payload again (which is an error).

        Attachments

          Issue Links

            Activity

              People

              • Assignee:
                michaelbusch Michael Busch
                Reporter:
                motinis Moti Nisenson
              • Votes:
                0 Vote for this issue
                Watchers:
                1 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: