# Package org.apache.lucene.queries.intervals

Intervals queries

This package contains experimental classes to search over intervals within fields

## IntervalsSource

The `IntervalsSource` class can be used to construct proximity relationships between terms and intervals. They can be built using static methods in the `Intervals` class.

### Basic intervals

- `Intervals.term(String)` — Represents a single term.
- `Intervals.phrase(java.lang.String...)` — Represents a phrase.
- `Intervals.analyzedText(java.lang.String, org.apache.lucene.analysis.Analyzer, java.lang.String, int, boolean)` — Represents a phrase (or an unordered sequence) of tokens resulting from an analysis of a given text.
- `Intervals.ordered(IntervalsSource...)` — Represents an interval over an ordered set of terms or intervals.
- `Intervals.unordered(IntervalsSource...)` — Represents an interval over an unordered set of terms or intervals.
- `Intervals.or(IntervalsSource...)` — Represents the disjunction of a set of terms or intervals.
- `Intervals.wildcard(org.apache.lucene.util.BytesRef)` — Represents an suffix wildcard (any prefix-matching term from the index).

### Filters

- `Intervals.maxwidth(int, IntervalsSource)` — Filters out intervals that are larger than a set width.
- `Intervals.maxgaps(int, IntervalsSource)` — Filters out intervals that have more than a set number of gaps between their constituent sub-intervals.
- `Intervals.containedBy(IntervalsSource, IntervalsSource)` — Returns intervals that are contained by another interval.
- `Intervals.notContainedBy(IntervalsSource, IntervalsSource)` — Returns intervals that are *not* contained by another interval.
- `Intervals.containing(IntervalsSource, IntervalsSource)` — Returns intervals that contain another interval.
- `Intervals.notContaining(IntervalsSource, IntervalsSource)` — Returns intervals that do not contain another interval.
- `Intervals.nonOverlapping(IntervalsSource, IntervalsSource)` — Returns intervals that do not overlap with another interval.
- `Intervals.notWithin(IntervalsSource, int, IntervalsSource)` — Returns intervals that do not appear within a set number of positions of another interval.

The `Intervals` class contains more advanced filters, please refer to the documentation of that class.

## IntervalQuery

An `IntervalQuery` takes a field name and an `IntervalsSource`, and matches all documents that contain intervals defined by the source in that field.

## Interval query support in query parsers

Lucene's `StandardQueryParser` (from the `queryparser` module) supports interval function expressions.

- Interface Summary
  Interface | Description
  --- | ---
  IntervalMatchesIterator | An extension of MatchesIterator that allows it to be treated as an IntervalIterator

- Class Summary
  Class | Description
  --- | ---
  FilteredIntervalsSource | An IntervalsSource that filters the intervals from another IntervalsSource
  IntervalFilter | Wraps an `IntervalIterator` and passes through those intervals that match the `IntervalFilter.accept()` function
  IntervalIterator | A `DocIdSetIterator` that also allows iteration over matching intervals in a document.
  IntervalQuery | A query that retrieves documents containing intervals returned from an `IntervalsSource`
  Intervals | Factory functions for creating `interval sources`.
  IntervalsSource | A helper class for `IntervalQuery` that provides an `IntervalIterator` for a given field and segment