Lucene.Net
3.0.3
Lucene.Net is a .NET port of the Java Lucene Indexing Library
|
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:
| |
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. | |
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.
|
protected |
Constructs a query matching terms that cannot be represented with a single Term.
Definition at line 367 of file MultiTermQuery.cs.
|
virtual |
Expert: Resets the counting of unique terms. Do this before executing the query/filter.
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.
|
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.
|
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.
|
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.
Definition at line 202 of file MultiTermQuery.cs.
|
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.
Definition at line 114 of file MultiTermQuery.cs.
|
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.
Definition at line 170 of file MultiTermQuery.cs.
|
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.
|
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.
Definition at line 390 of file MultiTermQuery.cs.