Class ChainedFilter

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

public class ChainedFilter extends Filter

Allows multiple Filters 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.

  • Field Details

  • Constructor Details

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

    • getDocIdSet

      public DocIdSet getDocIdSet(AtomicReaderContext context, Bits acceptDocs) throws IOException
      Specified by:
      getDocIdSet in class Filter
      Parameters:
      context - a AtomicReaderContext instance opened on the index currently searched on. Note, it is likely that the provided reader info 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. The provided context is always an atomic context, so you can call AtomicReader.fields() on the context's reader, for example.
      acceptDocs - Bits that represent the allowable docs to match (typically deleted docs but possibly filtering other documents)
      Returns:
      a DocIdSet that provides the documents which should be permitted or prohibited in search results. NOTE: null should be returned if the filter doesn't accept any documents otherwise internal optimization might not apply in the case an empty DocIdSet is returned.
      Throws:
      IOException
    • toString

      public String toString()
      Overrides:
      toString in class Object