Lucene++ - a full-featured, c++ search engine
API Documentation


MultiTermQuery.h
Go to the documentation of this file.
1 // Copyright (c) 2009-2014 Alan Wright. All rights reserved.
3 // Distributable under the terms of either the Apache License (Version 2.0)
4 // or the GNU Lesser General Public License.
6 
7 #ifndef MULTITERMQUERY_H
8 #define MULTITERMQUERY_H
9 
10 #include "Query.h"
11 
12 namespace Lucene {
13 
31 class LPPAPI MultiTermQuery : public Query {
32 public:
34  virtual ~MultiTermQuery();
35 
37 
38 protected:
40  int32_t numberOfTerms;
41 
42 public:
51 
62 
71 
78 
92 
96 
97  virtual QueryPtr rewrite(const IndexReaderPtr& reader);
98 
101 
104  virtual void setRewriteMethod(const RewriteMethodPtr& method);
105 
107  virtual int32_t hashCode();
108  virtual bool equals(const LuceneObjectPtr& other);
109 
110 protected:
112  virtual FilteredTermEnumPtr getEnum(const IndexReaderPtr& reader) = 0;
113 
114  void incTotalNumberOfTerms(int32_t inc);
115 
117  friend class ScoringBooleanQueryRewrite;
119 };
120 
122 class LPPAPI RewriteMethod : public LuceneObject {
123 public:
124  virtual ~RewriteMethod();
126 
127 public:
128  virtual QueryPtr rewrite(const IndexReaderPtr& reader, const MultiTermQueryPtr& query) = 0;
129 };
130 
136 public:
139 
141 
142 public:
143  // Defaults derived from rough tests with a 20.0 million doc Wikipedia index. With more than 350 terms
144  // in the query, the filter method is fastest
145  static const int32_t DEFAULT_TERM_COUNT_CUTOFF;
146 
147  // If the query will hit more than 1 in 1000 of the docs in the index (0.1%), the filter method is fastest
148  static const double DEFAULT_DOC_COUNT_PERCENT;
149 
150 protected:
153 
154 public:
157  virtual void setTermCountCutoff(int32_t count);
158 
160  virtual int32_t getTermCountCutoff();
161 
165  virtual void setDocCountPercent(double percent);
166 
168  virtual double getDocCountPercent();
169 
170  virtual QueryPtr rewrite(const IndexReaderPtr& reader, const MultiTermQueryPtr& query);
171 
172  virtual int32_t hashCode();
173  virtual bool equals(const LuceneObjectPtr& other);
174 };
175 
176 }
177 
178 #endif
Lucene::MultiTermQuery::getEnum
virtual FilteredTermEnumPtr getEnum(const IndexReaderPtr &reader)=0
Construct the enumeration to be used, expanding the pattern term.
Lucene::MultiTermQuery::CONSTANT_SCORE_AUTO_REWRITE_DEFAULT
static RewriteMethodPtr CONSTANT_SCORE_AUTO_REWRITE_DEFAULT()
Read-only default instance of ConstantScoreAutoRewrite, with {} set to ConstantScoreAutoRewrite#DEFA...
LUCENE_CLASS
#define LUCENE_CLASS(Name)
Definition: LuceneObject.h:24
Lucene::MultiTermQueryPtr
boost::shared_ptr< MultiTermQuery > MultiTermQueryPtr
Definition: LuceneTypes.h:389
Lucene::MultiTermQuery::SCORING_BOOLEAN_QUERY_REWRITE
static RewriteMethodPtr SCORING_BOOLEAN_QUERY_REWRITE()
A rewrite method that first translates each term into BooleanClause.Occur#SHOULD clause in a BooleanQ...
Lucene::MultiTermQuery::hashCode
virtual int32_t hashCode()
Return hash code for this object.
Lucene::RewriteMethod::rewrite
virtual QueryPtr rewrite(const IndexReaderPtr &reader, const MultiTermQueryPtr &query)=0
Lucene::LuceneObjectPtr
boost::shared_ptr< LuceneObject > LuceneObjectPtr
Definition: LuceneTypes.h:539
Lucene::ConstantScoreAutoRewrite::setTermCountCutoff
virtual void setTermCountCutoff(int32_t count)
If the number of terms in this query is equal to or larger than this setting then {} is used.
Lucene::ConstantScoreAutoRewrite::setDocCountPercent
virtual void setDocCountPercent(double percent)
If the number of documents to be visited in the postings exceeds this specified percentage of the max...
Lucene::QueryPtr
boost::shared_ptr< Query > QueryPtr
Definition: LuceneTypes.h:420
Lucene::ConstantScoreAutoRewrite::equals
virtual bool equals(const LuceneObjectPtr &other)
Return whether two objects are equal.
Query.h
Lucene::ConstantScoreAutoRewrite::termCountCutoff
int32_t termCountCutoff
Definition: MultiTermQuery.h:151
Lucene::MultiTermQuery::rewrite
virtual QueryPtr rewrite(const IndexReaderPtr &reader)
Called to re-write queries into primitive queries. For example, a PrefixQuery will be rewritten into ...
Lucene::MultiTermQuery::rewriteMethod
RewriteMethodPtr rewriteMethod
Definition: MultiTermQuery.h:36
Lucene::MultiTermQuery::incTotalNumberOfTerms
void incTotalNumberOfTerms(int32_t inc)
Lucene::MultiTermQuery::getRewriteMethod
virtual RewriteMethodPtr getRewriteMethod()
Lucene
Definition: AbstractAllTermDocs.h:12
Lucene::ConstantScoreAutoRewrite::DEFAULT_TERM_COUNT_CUTOFF
static const int32_t DEFAULT_TERM_COUNT_CUTOFF
Definition: MultiTermQuery.h:140
Lucene::LuceneObject
Base class for all Lucene classes.
Definition: LuceneObject.h:31
Lucene::ConstantScoreAutoRewrite::getDocCountPercent
virtual double getDocCountPercent()
Lucene::ConstantScoreAutoRewrite::docCountPercent
double docCountPercent
Definition: MultiTermQuery.h:152
Lucene::RewriteMethodPtr
boost::shared_ptr< RewriteMethod > RewriteMethodPtr
Definition: LuceneTypes.h:425
Lucene::IndexReaderPtr
boost::shared_ptr< IndexReader > IndexReaderPtr
Definition: LuceneTypes.h:157
Lucene::MultiTermQuery::MultiTermQuery
MultiTermQuery()
Lucene::MultiTermQuery::clone
virtual LuceneObjectPtr clone(const LuceneObjectPtr &other=LuceneObjectPtr())
Returns a clone of this query.
Lucene::Query
The abstract base class for queries.
Definition: Query.h:31
Lucene::MultiTermQuery::clearTotalNumberOfTerms
void clearTotalNumberOfTerms()
Resets the counting of unique terms. Do this before executing the query/filter.
Lucene::MultiTermQuery::CONSTANT_SCORE_FILTER_REWRITE
static RewriteMethodPtr CONSTANT_SCORE_FILTER_REWRITE()
A rewrite method that first creates a private Filter, by visiting each term in sequence and marking a...
Lucene::ConstantScoreAutoRewrite
A rewrite method that tries to pick the best constant-score rewrite method based on term and document...
Definition: MultiTermQuery.h:135
Lucene::ConstantScoreAutoRewrite::rewrite
virtual QueryPtr rewrite(const IndexReaderPtr &reader, const MultiTermQueryPtr &query)
Lucene::RewriteMethod
Abstract class that defines how the query is rewritten.
Definition: MultiTermQuery.h:122
Lucene::MultiTermQuery::~MultiTermQuery
virtual ~MultiTermQuery()
Lucene::MultiTermQueryWrapperFilter
A wrapper for MultiTermQuery, that exposes its functionality as a Filter.
Definition: MultiTermQueryWrapperFilter.h:22
Lucene::MultiTermQuery::numberOfTerms
int32_t numberOfTerms
Definition: MultiTermQuery.h:40
Lucene::RewriteMethod::~RewriteMethod
virtual ~RewriteMethod()
Lucene::ConstantScoreAutoRewrite::ConstantScoreAutoRewrite
ConstantScoreAutoRewrite()
Lucene::MultiTermQuery::equals
virtual bool equals(const LuceneObjectPtr &other)
Return whether two objects are equal.
Lucene::MultiTermQuery::CONSTANT_SCORE_BOOLEAN_QUERY_REWRITE
static RewriteMethodPtr CONSTANT_SCORE_BOOLEAN_QUERY_REWRITE()
Like SCORING_BOOLEAN_QUERY_REWRITE except scores are not computed. Instead, each matching document re...
Lucene::MultiTermQuery::getTotalNumberOfTerms
int32_t getTotalNumberOfTerms()
Return the number of unique terms visited during execution of the query. If there are many of them,...
Lucene::ConstantScoreAutoRewrite::DEFAULT_DOC_COUNT_PERCENT
static const double DEFAULT_DOC_COUNT_PERCENT
Definition: MultiTermQuery.h:148
Lucene::ConstantScoreAutoRewrite::getTermCountCutoff
virtual int32_t getTermCountCutoff()
Lucene::MultiTermQuery
An abstract Query that matches documents containing a subset of terms provided by a {} enumeration.
Definition: MultiTermQuery.h:31
Lucene::MultiTermQuery::setRewriteMethod
virtual void setRewriteMethod(const RewriteMethodPtr &method)
Sets the rewrite method to be used when executing the query. You can use one of the four core methods...
Lucene::ConstantScoreAutoRewrite::~ConstantScoreAutoRewrite
virtual ~ConstantScoreAutoRewrite()
Lucene::ConstantScoreAutoRewrite::hashCode
virtual int32_t hashCode()
Return hash code for this object.
Lucene::FilteredTermEnumPtr
boost::shared_ptr< FilteredTermEnum > FilteredTermEnumPtr
Definition: LuceneTypes.h:365

clucene.sourceforge.net