Package org.apache.lucene.queries.intervals

## Class IntervalFilter

- java.lang.Object
- - org.apache.lucene.search.DocIdSetIterator
  - - org.apache.lucene.queries.intervals.IntervalIterator
    - - org.apache.lucene.queries.intervals.IntervalFilter

-     public abstract class IntervalFilter
      extends IntervalIterator

  Wraps an `IntervalIterator` and passes through those intervals that match the `accept()` function

- - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `protected IntervalIterator` | `in` |

    - ### Fields inherited from class org.apache.lucene.queries.intervals.IntervalIterator

      `NO_MORE_INTERVALS`

    - ### Fields inherited from class org.apache.lucene.search.DocIdSetIterator

      `NO_MORE_DOCS`

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `IntervalFilter​(IntervalIterator in)` | Create a new filter

  - ### Method Summary

    All Methods Instance Methods Abstract Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `protected abstract boolean` | `accept()` |
    `int` | `advance​(int target)` |
    `long` | `cost()` |
    `int` | `docID()` |
    `int` | `end()` | The end of the current interval
    `int` | `gaps()` | The number of gaps within the current interval
    `float` | `matchCost()` | An indication of the average cost of iterating over all intervals in a document
    `int` | `nextDoc()` |
    `int` | `nextInterval()` | Advance the iterator to the next interval
    `int` | `start()` | The start of the current interval

    - ### Methods inherited from class org.apache.lucene.queries.intervals.IntervalIterator

      `toString, width`

    - ### Methods inherited from class org.apache.lucene.search.DocIdSetIterator

      `all, empty, range, slowAdvance`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- - ### Field Detail

    - #### in

          protected final IntervalIterator in

  - ### Constructor Detail

    - #### IntervalFilter

          public IntervalFilter​(IntervalIterator in)

      Create a new filter

  - ### Method Detail

    - #### docID

          public int docID()

      Specified by:
        `docID` in class `DocIdSetIterator`

    - #### nextDoc

          public int nextDoc()
                      throws IOException

      Specified by:
        `nextDoc` in class `DocIdSetIterator`
      Throws:
        `IOException`

    - #### advance

          public int advance​(int target)
                      throws IOException

      Specified by:
        `advance` in class `DocIdSetIterator`
      Throws:
        `IOException`

    - #### cost

          public long cost()

      Specified by:
        `cost` in class `DocIdSetIterator`

    - #### start

          public int start()

      Description copied from class: `IntervalIterator`
      The start of the current interval

      Returns -1 if `IntervalIterator.nextInterval()` has not yet been called and `IntervalIterator.NO_MORE_INTERVALS` once the iterator is exhausted.

      Specified by:
        `start` in class `IntervalIterator`

    - #### end

          public int end()

      Description copied from class: `IntervalIterator`
      The end of the current interval

      Returns -1 if `IntervalIterator.nextInterval()` has not yet been called and `IntervalIterator.NO_MORE_INTERVALS` once the iterator is exhausted.

      Specified by:
        `end` in class `IntervalIterator`

    - #### gaps

          public int gaps()

      Description copied from class: `IntervalIterator`
      The number of gaps within the current interval

      Note that this returns the number of gaps between the immediate sub-intervals of this interval, and does not include the gaps inside those sub-intervals.

      Should not be called before `IntervalIterator.nextInterval()`, or after it has returned `IntervalIterator.NO_MORE_INTERVALS`

      Specified by:
        `gaps` in class `IntervalIterator`

    - #### matchCost

          public float matchCost()

      Description copied from class: `IntervalIterator`
      An indication of the average cost of iterating over all intervals in a document
      Specified by:
        `matchCost` in class `IntervalIterator`
      See Also:
        `TwoPhaseIterator.matchCost()`

    - #### accept

          protected abstract boolean accept()

      Returns:
        `true` if the wrapped iterator's interval should be passed on

    - #### nextInterval

          public final int nextInterval()
                                 throws IOException

      Description copied from class: `IntervalIterator`
      Advance the iterator to the next interval

      Should not be called after `DocIdSetIterator.NO_MORE_DOCS` is returned by `DocIdSetIterator.nextDoc()` or `DocIdSetIterator.advance(int)`. If that's the case in some existing code, please consider opening an issue. However, after `IntervalIterator.NO_MORE_INTERVALS` is returned by this method, it might be called again.

      Specified by:
        `nextInterval` in class `IntervalIterator`
      Returns:
        the start of the next interval, or `IntervalIterator.NO_MORE_INTERVALS` if there are no more intervals on the current document
      Throws:
        `IOException`