Lucene.Net  3.0.3
Lucene.Net is a port of the Lucene search engine library, written in C# and targeted at .NET runtime users.
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Properties Pages
Classes | Public Member Functions | Static Public Attributes | Protected Member Functions | Properties | List of all members
Lucene.Net.Search.MultiTermQuery Class Referenceabstract

An abstract Query that matches documents containing a subset of terms provided by a FilteredTermEnum enumeration. More...

Inherits Lucene.Net.Search.Query.

Inherited by Contrib.Regex.RegexQuery, Lucene.Net.Search.FuzzyQuery, Lucene.Net.Search.NumericRangeQuery< T >, Lucene.Net.Search.PrefixQuery, Lucene.Net.Search.TermRangeQuery, and Lucene.Net.Search.WildcardQuery.

Classes

class  AnonymousClassConstantScoreAutoRewrite
 
class  ConstantScoreAutoRewrite
 A rewrite method that tries to pick the best constant-score rewrite method based on term and document counts from the query. If both the number of terms and documents is small enough, then CONSTANT_SCORE_BOOLEAN_QUERY_REWRITE is used. Otherwise, CONSTANT_SCORE_FILTER_REWRITE is used. More...
 

Public Member Functions

virtual void ClearTotalNumberOfTerms ()
 Expert: Resets the counting of unique terms. Do this before executing the query/filter.
 
override Query Rewrite (IndexReader reader)
 Expert: called to re-write queries into primitive queries. For example, a PrefixQuery will be rewritten into a BooleanQuery that consists of TermQuerys.
 
override int GetHashCode ()
 
override bool Equals (System.Object obj)
 
- Public Member Functions inherited from Lucene.Net.Search.Query
abstract System.String ToString (System.String field)
 Prints a query to a string, with field assumed to be the default field and omitted. The representation used is one that is supposed to be readable by QueryParser. However, there are the following limitations:

  • If the query was created by the parser, the printed representation may not be exactly what was parsed. For example, characters that need to be escaped will be represented without the required backslash.
  • Some of the more complicated queries (e.g. span queries) don't have a representation that can be parsed by QueryParser.

 
override System.String ToString ()
 Prints a query to a string.
 
virtual Weight CreateWeight (Searcher searcher)
 Expert: Constructs an appropriate Weight implementation for this query.
 
virtual Weight Weight (Searcher searcher)
 Expert: Constructs and initializes a Weight for a top-level query.
 
virtual Query Combine (Query[] queries)
 Expert: called when re-writing queries under MultiSearcher.
 
virtual void ExtractTerms (System.Collections.Generic.ISet< Term > terms)
 Expert: adds all terms occuring in this query to the terms set. Only works if this query is in its rewritten form.
 
virtual Similarity GetSimilarity (Searcher searcher)
 Expert: Returns the Similarity implementation to be used for this query. Subclasses may override this method to specify their own Similarity implementation, perhaps one that delegates through that of the Searcher. By default the Searcher's Similarity implementation is returned.
 
virtual System.Object Clone ()
 Returns a clone of this query.
 
override int GetHashCode ()
 
override bool Equals (System.Object obj)
 

Static Public Attributes

static readonly RewriteMethod CONSTANT_SCORE_FILTER_REWRITE = new ConstantScoreFilterRewrite()
 A rewrite method that first creates a private Filter, by visiting each term in sequence and marking all docs for that term. Matching documents are assigned a constant score equal to the query's boost.
 
static readonly RewriteMethod SCORING_BOOLEAN_QUERY_REWRITE = new ScoringBooleanQueryRewrite()
 A rewrite method that first translates each term into Occur.SHOULD clause in a BooleanQuery, and keeps the scores as computed by the query. Note that typically such scores are meaningless to the user, and require non-trivial CPU to compute, so it's almost always better to use CONSTANT_SCORE_AUTO_REWRITE_DEFAULT instead.
 
static readonly RewriteMethod CONSTANT_SCORE_BOOLEAN_QUERY_REWRITE = new ConstantScoreBooleanQueryRewrite()
 Like SCORING_BOOLEAN_QUERY_REWRITE except scores are not computed. Instead, each matching document receives a constant score equal to the query's boost.
 
static readonly RewriteMethod CONSTANT_SCORE_AUTO_REWRITE_DEFAULT
 Read-only default instance of ConstantScoreAutoRewrite , with ConstantScoreAutoRewrite.TermCountCutoff set to ConstantScoreAutoRewrite.DEFAULT_TERM_COUNT_CUTOFF
 

Protected Member Functions

 MultiTermQuery ()
 Constructs a query matching terms that cannot be represented with a single Term.
 

Properties

virtual int TotalNumberOfTerms [get]
 Expert: Return the number of unique terms visited during execution of the query. If there are many of them, you may consider using another query type or optimize your total term count in index. This method is not thread safe, be sure to only call it when no query is running! If you re-use the same query instance for another search, be sure to first reset the term counter with ClearTotalNumberOfTerms. On optimized indexes / no MultiReaders, you get the correct number of unique terms for the whole index. Use this number to compare different queries. For non-optimized indexes this number can also be achived in non-constant-score mode. In constant-score mode you get the total number of terms seeked for all segments / sub-readers.
 
virtual RewriteMethod RewriteMethod [get, set]
 Sets the rewrite method to be used when executing the query. You can use one of the four core methods, or implement your own subclass of Search.RewriteMethod.
 
- Properties inherited from Lucene.Net.Search.Query
virtual float Boost [get, set]
 Gets or sets the boost for this query clause to b. Documents matching this clause will (in addition to the normal weightings) have their score multiplied by b. The boost is 1.0 by default.
 

Additional Inherited Members

- Static Public Member Functions inherited from Lucene.Net.Search.Query
static Query MergeBooleanQueries (params BooleanQuery[] queries)
 Expert: merges the clauses of a set of BooleanQuery's into a single BooleanQuery.
 

Detailed Description

An abstract Query that matches documents containing a subset of terms provided by a FilteredTermEnum enumeration.

This query cannot be used directly; you must subclass it and define GetEnum to provide a FilteredTermEnum that iterates through the terms to be matched.

NOTE: if RewriteMethod is either CONSTANT_SCORE_BOOLEAN_QUERY_REWRITE or SCORING_BOOLEAN_QUERY_REWRITE , you may encounter a BooleanQuery.TooManyClauses exception during searching, which happens when the number of terms to be searched exceeds BooleanQuery.MaxClauseCount . Setting RewriteMethod to CONSTANT_SCORE_FILTER_REWRITE prevents this.

The recommended rewrite method is CONSTANT_SCORE_AUTO_REWRITE_DEFAULT : it doesn't spend CPU computing unhelpful scores, and it tries to pick the most performant rewrite method given the query.

Note that QueryParser produces MultiTermQueries using CONSTANT_SCORE_AUTO_REWRITE_DEFAULT by default.

Definition at line 58 of file MultiTermQuery.cs.

Constructor & Destructor Documentation

Lucene.Net.Search.MultiTermQuery.MultiTermQuery ( )
protected

Constructs a query matching terms that cannot be represented with a single Term.

Definition at line 367 of file MultiTermQuery.cs.

Member Function Documentation

virtual void Lucene.Net.Search.MultiTermQuery.ClearTotalNumberOfTerms ( )
virtual

Expert: Resets the counting of unique terms. Do this before executing the query/filter.

See Also
TotalNumberOfTerms

Definition at line 399 of file MultiTermQuery.cs.

override bool Lucene.Net.Search.MultiTermQuery.Equals ( System.Object  obj)

Definition at line 436 of file MultiTermQuery.cs.

override int Lucene.Net.Search.MultiTermQuery.GetHashCode ( )

Definition at line 425 of file MultiTermQuery.cs.

override Query Lucene.Net.Search.MultiTermQuery.Rewrite ( IndexReader  reader)
virtual

Expert: called to re-write queries into primitive queries. For example, a PrefixQuery will be rewritten into a BooleanQuery that consists of TermQuerys.

Reimplemented from Lucene.Net.Search.Query.

Reimplemented in Lucene.Net.Search.WildcardQuery.

Definition at line 409 of file MultiTermQuery.cs.

Member Data Documentation

readonly RewriteMethod Lucene.Net.Search.MultiTermQuery.CONSTANT_SCORE_AUTO_REWRITE_DEFAULT
static

Read-only default instance of ConstantScoreAutoRewrite , with ConstantScoreAutoRewrite.TermCountCutoff set to ConstantScoreAutoRewrite.DEFAULT_TERM_COUNT_CUTOFF

and ConstantScoreAutoRewrite.DocCountPercent set to ConstantScoreAutoRewrite.DEFAULT_DOC_COUNT_PERCENT Note that you cannot alter the configuration of this instance; you'll need to create a private instance instead.

Definition at line 362 of file MultiTermQuery.cs.

readonly RewriteMethod Lucene.Net.Search.MultiTermQuery.CONSTANT_SCORE_BOOLEAN_QUERY_REWRITE = new ConstantScoreBooleanQueryRewrite()
static

Like SCORING_BOOLEAN_QUERY_REWRITE except scores are not computed. Instead, each matching document receives a constant score equal to the query's boost.

NOTE: This rewrite method will hit BooleanQuery.TooManyClauses if the number of terms exceeds BooleanQuery.MaxClauseCount.

See Also
RewriteMethod

Definition at line 202 of file MultiTermQuery.cs.

readonly RewriteMethod Lucene.Net.Search.MultiTermQuery.CONSTANT_SCORE_FILTER_REWRITE = new ConstantScoreFilterRewrite()
static

A rewrite method that first creates a private Filter, by visiting each term in sequence and marking all docs for that term. Matching documents are assigned a constant score equal to the query's boost.

This method is faster than the BooleanQuery rewrite methods when the number of matched terms or matched documents is non-trivial. Also, it will never hit an errant BooleanQuery.TooManyClauses exception.

See Also
RewriteMethod

Definition at line 114 of file MultiTermQuery.cs.

readonly RewriteMethod Lucene.Net.Search.MultiTermQuery.SCORING_BOOLEAN_QUERY_REWRITE = new ScoringBooleanQueryRewrite()
static

A rewrite method that first translates each term into Occur.SHOULD clause in a BooleanQuery, and keeps the scores as computed by the query. Note that typically such scores are meaningless to the user, and require non-trivial CPU to compute, so it's almost always better to use CONSTANT_SCORE_AUTO_REWRITE_DEFAULT instead.

NOTE: This rewrite method will hit BooleanQuery.TooManyClauses if the number of terms exceeds BooleanQuery.MaxClauseCount.

See Also
RewriteMethod

Definition at line 170 of file MultiTermQuery.cs.

Property Documentation

virtual RewriteMethod Lucene.Net.Search.MultiTermQuery.RewriteMethod
getset

Sets the rewrite method to be used when executing the query. You can use one of the four core methods, or implement your own subclass of Search.RewriteMethod.

Definition at line 419 of file MultiTermQuery.cs.

virtual int Lucene.Net.Search.MultiTermQuery.TotalNumberOfTerms
get

Expert: Return the number of unique terms visited during execution of the query. If there are many of them, you may consider using another query type or optimize your total term count in index. This method is not thread safe, be sure to only call it when no query is running! If you re-use the same query instance for another search, be sure to first reset the term counter with ClearTotalNumberOfTerms. On optimized indexes / no MultiReaders, you get the correct number of unique terms for the whole index. Use this number to compare different queries. For non-optimized indexes this number can also be achived in non-constant-score mode. In constant-score mode you get the total number of terms seeked for all segments / sub-readers.

See Also
ClearTotalNumberOfTerms

Definition at line 390 of file MultiTermQuery.cs.


The documentation for this class was generated from the following file: