Package org.apache.lucene.queries.spans

# Class FilterSpans

java.lang.Object
org.apache.lucene.search.DocIdSetIterator
org.apache.lucene.queries.spans.Spans
org.apache.lucene.queries.spans.FilterSpans

public abstract class FilterSpans extends Spans
A `Spans` implementation wrapping another spans instance, allowing to filter spans matches easily by implementing `accept(org.apache.lucene.queries.spans.Spans)`

## Nested Class Summary

Nested Classes
Modifier and Type
Class
Description
`static enum`
`FilterSpans.AcceptStatus`
Status returned from `accept(Spans)` that indicates whether a candidate match should be accepted, rejected, or rejected and move on to the next document.

## Field Summary

Fields
Modifier and Type
Field
Description
`protected final Spans`
`in`
The wrapped spans instance.

### Fields inherited from class org.apache.lucene.queries.spans.Spans

`NO_MORE_POSITIONS`

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

`NO_MORE_DOCS`

## Constructor Summary

Constructors
Modifier
Constructor
Description
`protected`
`FilterSpans(Spans in)`
Wrap the given `Spans`.

## Method Summary

Modifier and Type
Method
Description
`protected abstract FilterSpans.AcceptStatus`
`accept(Spans candidate)`
Returns YES if the candidate should be an accepted match, NO if it should not, and NO_MORE_IN_CURRENT_DOC if iteration should move on to the next document.
`final int`
`advance(int target)`
`final TwoPhaseIterator`
`asTwoPhaseIterator()`
Optional method: Return a `TwoPhaseIterator` view of this `Scorer`.
`void`
`collect(SpanCollector collector)`
Collect postings data from the leaves of the current Spans.
`final long`
`cost()`
`final int`
`docID()`
`final int`
`endPosition()`
Returns the end position for the current start position, or -1 when `Spans.nextStartPosition()` was not yet called on the current doc.
`final int`
`nextDoc()`
`final int`
`nextStartPosition()`
Returns the next start position for the current doc.
`float`
`positionsCost()`
Return an estimation of the cost of using the positions of this `Spans` for any single document, but only after `Spans.asTwoPhaseIterator()` returned `null`.
`final int`
`startPosition()`
Returns the start position in the current doc, or -1 when `Spans.nextStartPosition()` was not yet called on the current doc.
`String`
`toString()`
`int`
`width()`
Return the width of the match, which is typically used to sloppy freq.

### Methods inherited from class org.apache.lucene.queries.spans.Spans

`doCurrentSpans, doStartCurrentDoc`

### 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 Details

### in

protected final Spans in
The wrapped spans instance.

## Constructor Details

### FilterSpans

protected FilterSpans(Spans in)
Wrap the given `Spans`.

## Method Details

### accept

protected abstract FilterSpans.AcceptStatus accept(Spans candidate) throws IOException
Returns YES if the candidate should be an accepted match, NO if it should not, and NO_MORE_IN_CURRENT_DOC if iteration should move on to the next document.

Throws:
  `IOException`

### nextDoc

public final int nextDoc() throws IOException

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

### advance

public final int advance(int target) throws IOException

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

### docID

public final int docID()

Specified by:
  `docID` in class `DocIdSetIterator`

### nextStartPosition

public final int nextStartPosition() throws IOException
Description copied from class: `Spans`
Returns the next start position for the current doc. There is always at least one start/end position per doc. After the last start/end position at the current doc this returns `Spans.NO_MORE_POSITIONS`.

Specified by:
  `nextStartPosition` in class `Spans`
Throws:
  `IOException`

### startPosition

public final int startPosition()
Description copied from class: `Spans`
Returns the start position in the current doc, or -1 when `Spans.nextStartPosition()` was not yet called on the current doc. After the last start/end position at the current doc this returns `Spans.NO_MORE_POSITIONS`.

Specified by:
  `startPosition` in class `Spans`

### endPosition

public final int endPosition()
Description copied from class: `Spans`
Returns the end position for the current start position, or -1 when `Spans.nextStartPosition()` was not yet called on the current doc. After the last start/end position at the current doc this returns `Spans.NO_MORE_POSITIONS`.

Specified by:
  `endPosition` in class `Spans`

### width

public int width()
Description copied from class: `Spans`
Return the width of the match, which is typically used to sloppy freq. It is only legal to call this method when the iterator is on a valid doc ID and positioned. The return value must be positive, and lower values means that the match is better.

Specified by:
  `width` in class `Spans`

### collect

public void collect(SpanCollector collector) throws IOException
Description copied from class: `Spans`
Collect postings data from the leaves of the current Spans.

This method should only be called after `Spans.nextStartPosition()`, and before `Spans.NO_MORE_POSITIONS` has been reached.

Specified by:
  `collect` in class `Spans`
Parameters:
  `collector` - a SpanCollector
Throws:
  `IOException`

### cost

public final long cost()

Specified by:
  `cost` in class `DocIdSetIterator`

### toString

public String toString()

Overrides:
  `toString` in class `Spans`

### asTwoPhaseIterator

public final TwoPhaseIterator asTwoPhaseIterator()
Description copied from class: `Spans`
Optional method: Return a `TwoPhaseIterator` view of this `Scorer`. A return value of `null` indicates that two-phase iteration is not supported.

Overrides:
  `asTwoPhaseIterator` in class `Spans`
See Also:
  - `Scorer.twoPhaseIterator()`

### positionsCost

public float positionsCost()
Description copied from class: `Spans`
Return an estimation of the cost of using the positions of this `Spans` for any single document, but only after `Spans.asTwoPhaseIterator()` returned `null`. Otherwise this method should not be called. The returned value is independent of the current document.

Specified by:
  `positionsCost` in class `Spans`