## org.apache.lucene.search
Class ChainedFilter

    java.lang.Object
      org.apache.lucene.search.Filter
          org.apache.lucene.search.ChainedFilter

All Implemented Interfaces:
  Serializable

    public class ChainedFilter

extends Filter

Allows multiple `Filter`s to be chained. Logical operations such as NOT and XOR are applied between filters. One operation can be used for all filters, or a specific operation can be declared for each filter.

Order in which filters are called depends on the position of the filter in the chain. It's probably more efficient to place the most restrictive filters /least computationally-intensive filters first.

See Also:
  Serialized Form

Field Summary
`static int` `AND`
`static int` `ANDNOT`
`static int` `DEFAULT` Logical operation when none is declared.
`static int` `OR`
`static int` `XOR`

Constructor Summary
`ChainedFilter(Filter[] chain)` Ctor.
`ChainedFilter(Filter[] chain, int logic)` Ctor.
`ChainedFilter(Filter[] chain, int[] logicArray)` Ctor.

Method Summary
`protected DocIdSet` `finalResult(OpenBitSetDISI result, int maxDocs)` Deprecated. Either use CachingWrapperFilter, or switch to a different DocIdSet implementation yourself. This method will be removed in Lucene 4.0
`DocIdSet` `getDocIdSet(IndexReader reader)` `Filter.getDocIdSet(org.apache.lucene.index.IndexReader)`.
`String` `toString()`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

Field Detail

### OR

    public static final int OR

See Also:
  Constant Field Values

### AND

    public static final int AND

See Also:
  Constant Field Values

### ANDNOT

    public static final int ANDNOT

See Also:
  Constant Field Values

### XOR

    public static final int XOR

See Also:
  Constant Field Values

### DEFAULT

    public static int DEFAULT

  Logical operation when none is declared. Defaults to OR.

Constructor Detail

### ChainedFilter

    public ChainedFilter(Filter[] chain)

  Ctor.

  Parameters:
    `chain` - The chain of filters

### ChainedFilter

    public ChainedFilter(Filter[] chain,
                         int[] logicArray)

  Ctor.

  Parameters:
    `chain` - The chain of filters
    `logicArray` - Logical operations to apply between filters

### ChainedFilter

    public ChainedFilter(Filter[] chain,
                         int logic)

  Ctor.

  Parameters:
    `chain` - The chain of filters
    `logic` - Logical operation to apply to ALL filters

Method Detail

### getDocIdSet

    public DocIdSet getDocIdSet(IndexReader reader)
                         throws IOException

  `Filter.getDocIdSet(org.apache.lucene.index.IndexReader)`.

  Specified by:
    `getDocIdSet` in class `Filter`
  Parameters:
    `reader` - a `IndexReader` instance opened on the index currently searched on. Note, it is likely that the provided reader does not represent the whole underlying index i.e. if the index has more than one segment the given reader only represents a single segment.
  Returns:
    a DocIdSet that provides the documents which should be permitted or prohibited in search results. NOTE: null can be returned if no documents will be accepted by this Filter.
  Throws:
    `IOException`
  See Also:
    `DocIdBitSet`

### finalResult

    @Deprecated
    protected final DocIdSet finalResult(OpenBitSetDISI result,
                                                    int maxDocs)

  Deprecated. Either use CachingWrapperFilter, or switch to a different DocIdSet implementation yourself. This method will be removed in Lucene 4.0

  Provide a SortedVIntList when it is definitely smaller than an OpenBitSet

### toString

    public String toString()

  Overrides:
    `toString` in class `Object`