## org.apache.lucene.search
Class FilteredQuery

    java.lang.Object
      org.apache.lucene.search.Query
          org.apache.lucene.search.FilteredQuery

All Implemented Interfaces:
  Cloneable

    public class FilteredQuery

extends Query

A query that applies a filter to the results of another query.

Note: the bits are retrieved from the filter each time this query is used in a search - use a CachingWrapperFilter to avoid regenerating the bits every time.

Since:
  1.4
See Also:
  `CachingWrapperFilter`

Nested Class Summary
`static class` `FilteredQuery.FilterStrategy` Abstract class that defines how the filter (`DocIdSet`) applied during document collection.
`static class` `FilteredQuery.RandomAccessFilterStrategy` A `FilteredQuery.FilterStrategy` that conditionally uses a random access filter if the given `DocIdSet` supports random access (returns a non-null value from `DocIdSet.bits()`) and `FilteredQuery.RandomAccessFilterStrategy.useRandomAccess(Bits, int)` returns `true`.

Field Summary
`static FilteredQuery.FilterStrategy` `LEAP_FROG_FILTER_FIRST_STRATEGY` A filter strategy that uses a "leap-frog" approach (also called "zig-zag join").
`static FilteredQuery.FilterStrategy` `LEAP_FROG_QUERY_FIRST_STRATEGY` A filter strategy that uses a "leap-frog" approach (also called "zig-zag join").
`static FilteredQuery.FilterStrategy` `QUERY_FIRST_FILTER_STRATEGY` A filter strategy that advances the Query or rather its `Scorer` first and consults the filter `DocIdSet` for each matched document.
`static FilteredQuery.FilterStrategy` `RANDOM_ACCESS_FILTER_STRATEGY` A `FilteredQuery.FilterStrategy` that conditionally uses a random access filter if the given `DocIdSet` supports random access (returns a non-null value from `DocIdSet.bits()`) and `FilteredQuery.RandomAccessFilterStrategy.useRandomAccess(Bits, int)` returns `true`.

Constructor Summary
`FilteredQuery(Query query, Filter filter)` Constructs a new query which applies a filter to the results of the original query.
`FilteredQuery(Query query, Filter filter, FilteredQuery.FilterStrategy strategy)` Expert: Constructs a new query which applies a filter to the results of the original query.

Method Summary
`Weight` `createWeight(IndexSearcher searcher)` Returns a Weight that applies the filter to the enclosed query's Weight.
`boolean` `equals(Object o)` Returns true iff `o` is equal to this.
`void` `extractTerms(Set<Term> terms)` Expert: adds all terms occurring in this query to the terms set.
`Filter` `getFilter()` Returns this FilteredQuery's filter
`FilteredQuery.FilterStrategy` `getFilterStrategy()` Returns this FilteredQuery's `FilteredQuery.FilterStrategy`
`Query` `getQuery()` Returns this FilteredQuery's (unfiltered) Query
`int` `hashCode()` Returns a hash code value for this object.
`Query` `rewrite(IndexReader reader)` Rewrites the query.
`String` `toString(String s)` Prints a user-readable version of this query.

Methods inherited from class org.apache.lucene.search.Query
`clone, getBoost, setBoost, toString`

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

Field Detail

### RANDOM_ACCESS_FILTER_STRATEGY

    public static final FilteredQuery.FilterStrategy RANDOM_ACCESS_FILTER_STRATEGY

  A `FilteredQuery.FilterStrategy` that conditionally uses a random access filter if the given `DocIdSet` supports random access (returns a non-null value from `DocIdSet.bits()`) and `FilteredQuery.RandomAccessFilterStrategy.useRandomAccess(Bits, int)` returns `true`. Otherwise this strategy falls back to a "zig-zag join" ( `LEAP_FROG_FILTER_FIRST_STRATEGY`) strategy.

  Note: this strategy is the default strategy in `FilteredQuery`

### LEAP_FROG_FILTER_FIRST_STRATEGY

    public static final FilteredQuery.FilterStrategy LEAP_FROG_FILTER_FIRST_STRATEGY

  A filter strategy that uses a "leap-frog" approach (also called "zig-zag join"). The scorer and the filter take turns trying to advance to each other's next matching document, often jumping past the target document. When both land on the same document, it's collected.

  Note: This strategy uses the filter to lead the iteration.

### LEAP_FROG_QUERY_FIRST_STRATEGY

    public static final FilteredQuery.FilterStrategy LEAP_FROG_QUERY_FIRST_STRATEGY

  A filter strategy that uses a "leap-frog" approach (also called "zig-zag join"). The scorer and the filter take turns trying to advance to each other's next matching document, often jumping past the target document. When both land on the same document, it's collected.

  Note: This strategy uses the query to lead the iteration.

### QUERY_FIRST_FILTER_STRATEGY

    public static final FilteredQuery.FilterStrategy QUERY_FIRST_FILTER_STRATEGY

  A filter strategy that advances the Query or rather its `Scorer` first and consults the filter `DocIdSet` for each matched document.

  Note: this strategy requires a `DocIdSet.bits()` to return a non-null value. Otherwise this strategy falls back to `LEAP_FROG_QUERY_FIRST_STRATEGY`

  Use this strategy if the filter computation is more expensive than document scoring or if the filter has a linear running time to compute the next matching doc like exact geo distances.

Constructor Detail

### FilteredQuery

    public FilteredQuery(Query query,
                         Filter filter)

  Constructs a new query which applies a filter to the results of the original query. `Filter.getDocIdSet(org.apache.lucene.index.AtomicReaderContext, org.apache.lucene.util.Bits)` will be called every time this query is used in a search.

  Parameters:
    `query` - Query to be filtered, cannot be `null`.
    `filter` - Filter to apply to query results, cannot be `null`.

### FilteredQuery

    public FilteredQuery(Query query,
                         Filter filter,
                         FilteredQuery.FilterStrategy strategy)

  Expert: Constructs a new query which applies a filter to the results of the original query. `Filter.getDocIdSet(org.apache.lucene.index.AtomicReaderContext, org.apache.lucene.util.Bits)` will be called every time this query is used in a search.

  Parameters:
    `query` - Query to be filtered, cannot be `null`.
    `filter` - Filter to apply to query results, cannot be `null`.
    `strategy` - a filter strategy used to create a filtered scorer.
  See Also:
    `FilteredQuery.FilterStrategy`

Method Detail

### createWeight

    public Weight createWeight(IndexSearcher searcher)
                        throws IOException

  Returns a Weight that applies the filter to the enclosed query's Weight. This is accomplished by overriding the Scorer returned by the Weight.

  Overrides:
    `createWeight` in class `Query`
  Throws:
    `IOException`

### rewrite

    public Query rewrite(IndexReader reader)
                  throws IOException

  Rewrites the query. If the wrapped is an instance of `MatchAllDocsQuery` it returns a `ConstantScoreQuery`. Otherwise it returns a new `FilteredQuery` wrapping the rewritten query.

  Overrides:
    `rewrite` in class `Query`
  Throws:
    `IOException`

### getQuery

    public final Query getQuery()

  Returns this FilteredQuery's (unfiltered) Query

### getFilter

    public final Filter getFilter()

  Returns this FilteredQuery's filter

### getFilterStrategy

    public FilteredQuery.FilterStrategy getFilterStrategy()

  Returns this FilteredQuery's `FilteredQuery.FilterStrategy`

### extractTerms

    public void extractTerms(Set<Term> terms)

  Description copied from class: `Query`
  Expert: adds all terms occurring in this query to the terms set. Only works if this query is in its `rewritten` form.

  Overrides:
    `extractTerms` in class `Query`

### toString

    public String toString(String s)

  Prints a user-readable version of this query.

  Specified by:
    `toString` in class `Query`

### equals

    public boolean equals(Object o)

  Returns true iff `o` is equal to this.

  Overrides:
    `equals` in class `Query`

### hashCode

    public int hashCode()

  Returns a hash code value for this object.

  Overrides:
    `hashCode` in class `Query`

Copyright © 2000-2013 Apache Software Foundation. All Rights Reserved.