Package 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
Nested Classes Modifier and Type Class Description static classFilteredQuery.FilterStrategyAbstract class that defines how the filter (DocIdSet) applied during document collection.static classFilteredQuery.RandomAccessFilterStrategyAFilteredQuery.FilterStrategythat conditionally uses a random access filter if the givenDocIdSetsupports random access (returns a non-null value fromDocIdSet.bits()) andFilteredQuery.RandomAccessFilterStrategy.useRandomAccess(Bits, int)returnstrue.
-
Field Summary
Fields Modifier and Type Field Description static FilteredQuery.FilterStrategyLEAP_FROG_FILTER_FIRST_STRATEGYA filter strategy that uses a "leap-frog" approach (also called "zig-zag join").static FilteredQuery.FilterStrategyLEAP_FROG_QUERY_FIRST_STRATEGYA filter strategy that uses a "leap-frog" approach (also called "zig-zag join").static FilteredQuery.FilterStrategyQUERY_FIRST_FILTER_STRATEGYstatic FilteredQuery.FilterStrategyRANDOM_ACCESS_FILTER_STRATEGYAFilteredQuery.FilterStrategythat conditionally uses a random access filter if the givenDocIdSetsupports random access (returns a non-null value fromDocIdSet.bits()) andFilteredQuery.RandomAccessFilterStrategy.useRandomAccess(Bits, int)returnstrue.
-
Constructor Summary
Constructors Constructor Description 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
All Methods Instance Methods Concrete Methods Modifier and Type Method Description WeightcreateWeight(IndexSearcher searcher)Returns a Weight that applies the filter to the enclosed query's Weight.booleanequals(Object o)Returns true iffois equal to this.voidextractTerms(Set<Term> terms)Expert: adds all terms occurring in this query to the terms set.FiltergetFilter()Returns this FilteredQuery's filterFilteredQuery.FilterStrategygetFilterStrategy()Returns this FilteredQuery'sFilteredQuery.FilterStrategyQuerygetQuery()Returns this FilteredQuery's (unfiltered) QueryinthashCode()Returns a hash code value for this object.Queryrewrite(IndexReader reader)Rewrites the query.StringtoString(String s)Prints a user-readable version of this query.
-
-
-
Field Detail
-
RANDOM_ACCESS_FILTER_STRATEGY
public static final FilteredQuery.FilterStrategy RANDOM_ACCESS_FILTER_STRATEGY
AFilteredQuery.FilterStrategythat conditionally uses a random access filter if the givenDocIdSetsupports random access (returns a non-null value fromDocIdSet.bits()) andFilteredQuery.RandomAccessFilterStrategy.useRandomAccess(Bits, int)returnstrue. 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 itsScorerfirst and consults the filterDocIdSetfor each matched document.Note: this strategy requires a
DocIdSet.bits()to return a non-null value. Otherwise this strategy falls back toLEAP_FROG_QUERY_FIRST_STRATEGYUse 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 benull.filter- Filter to apply to query results, cannot benull.
-
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 benull.filter- Filter to apply to query results, cannot benull.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:
createWeightin classQuery- Throws:
IOException
-
rewrite
public Query rewrite(IndexReader reader) throws IOException
Rewrites the query. If the wrapped is an instance ofMatchAllDocsQueryit returns aConstantScoreQuery. Otherwise it returns a newFilteredQuerywrapping the rewritten query.- Overrides:
rewritein classQuery- 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'sFilteredQuery.FilterStrategy
-
extractTerms
public void extractTerms(Set<Term> terms)
Description copied from class:QueryExpert: adds all terms occurring in this query to the terms set. Only works if this query is in itsrewrittenform.- Overrides:
extractTermsin classQuery
-
equals
public boolean equals(Object o)
Returns true iffois equal to this.
-
-