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.
Modifier and Type | Field and Description |
---|---|
static int |
AND |
static int |
ANDNOT |
static int |
DEFAULT
Logical operation when none is declared.
|
static int |
OR |
static int |
XOR |
Constructor and Description |
---|
ChainedFilter(Filter[] chain)
Ctor.
|
ChainedFilter(Filter[] chain,
int logic)
Ctor.
|
ChainedFilter(Filter[] chain,
int[] logicArray)
Ctor.
|
Modifier and Type | Method and Description |
---|---|
DocIdSet |
getDocIdSet(AtomicReaderContext context,
Bits acceptDocs)
|
String |
toString() |
public static final int OR
public static final int AND
public static final int ANDNOT
public static final int XOR
public static final int DEFAULT
public ChainedFilter(Filter[] chain)
chain
- The chain of filterspublic ChainedFilter(Filter[] chain, int[] logicArray)
chain
- The chain of filterslogicArray
- Logical operations to apply between filterspublic ChainedFilter(Filter[] chain, int logic)
chain
- The chain of filterslogic
- Logical operation to apply to ALL filterspublic DocIdSet getDocIdSet(AtomicReaderContext context, Bits acceptDocs) throws IOException
getDocIdSet
in class Filter
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)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.IOException
Copyright © 2010 - 2020 Adobe. All Rights Reserved