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


QueryParser.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 QUERYPARSER_H
8 #define QUERYPARSER_H
9 
10 #include "QueryParserConstants.h"
11 #include "DateTools.h"
12 #include "BooleanClause.h"
13 
14 namespace Lucene {
15 
17 
70 class LPPAPI QueryParser : public QueryParserConstants, public LuceneObject {
71 public:
76  QueryParser(LuceneVersion::Version matchVersion, const String& field, const AnalyzerPtr& analyzer);
77 
80 
83 
84  virtual ~QueryParser();
85 
87 
89  enum Operator { OR_OPERATOR, AND_OPERATOR };
90 
91 protected:
92  static const int32_t CONJ_NONE;
93  static const int32_t CONJ_AND;
94  static const int32_t CONJ_OR;
95 
96  static const int32_t MOD_NONE;
97  static const int32_t MOD_NOT;
98  static const int32_t MOD_REQ;
99 
102 
104  int32_t _jj_ntk;
107 
108  int32_t jj_la;
109  int32_t jj_gen;
111 
112  static const int32_t jj_la1_0[];
113  static const int32_t jj_la1_1[];
114 
115  struct JJCalls;
116  typedef boost::shared_ptr<JJCalls> JJCallsPtr;
117 
118  struct JJCalls {
120  gen = 0;
121  arg = 0;
122  }
123 
124  int32_t gen;
126  int32_t arg;
128  };
129 
131  bool jj_rescan;
132  int32_t jj_gc;
133 
136  int32_t jj_kind;
138  int32_t jj_endpos;
139 
140 public:
145 
147  String field;
148  int32_t phraseSlop;
149  double fuzzyMinSim;
151  std::locale locale;
152 
153  // the default date resolution
155 
156  // maps field names to date resolutions
158 
159  // The collator to use when determining range inclusion, for use when constructing RangeQuerys
161 
164 
167 
170 
171 public:
174  QueryPtr parse(const String& query);
175 
178 
180  String getField();
181 
183  double getFuzzyMinSim();
184 
186  void setFuzzyMinSim(double fuzzyMinSim);
187 
191 
194  void setFuzzyPrefixLength(int32_t fuzzyPrefixLength);
195 
198  void setPhraseSlop(int32_t phraseSlop);
199 
201  int32_t getPhraseSlop();
202 
207  void setAllowLeadingWildcard(bool allowLeadingWildcard);
208 
211 
217  void setEnablePositionIncrements(bool enable);
218 
221 
228 
231 
234  void setLowercaseExpandedTerms(bool lowercaseExpandedTerms);
235 
238 
246 
249 
251  void setLocale(std::locale locale);
252 
254  std::locale getLocale();
255 
261 
265  void setDateResolution(const String& fieldName, DateTools::Resolution dateResolution);
266 
269  DateTools::Resolution getDateResolution(const String& fieldName);
270 
277  void setRangeCollator(const CollatorPtr& rc);
278 
281 
283  static int main(Collection<String> args);
284 
287  int32_t Conjunction();
288  int32_t Modifiers();
289 
291  virtual QueryPtr TopLevelQuery(const String& field);
292 
293  virtual QueryPtr ParseQuery(const String& field);
294  virtual QueryPtr ParseClause(const String& field);
295  virtual QueryPtr ParseTerm(const String& field);
296 
298  virtual void ReInit(const QueryParserCharStreamPtr& stream);
299 
301  virtual void ReInit(const QueryParserTokenManagerPtr& tokenMgr);
302 
305 
307  virtual QueryParserTokenPtr getToken(int32_t index);
308 
310  virtual void generateParseException();
311 
313  virtual void enable_tracing();
314 
316  virtual void disable_tracing();
317 
318 protected:
321 
322  virtual void addClause(Collection<BooleanClausePtr> clauses, int32_t conj, int32_t mods, const QueryPtr& q);
323 
326  virtual QueryPtr getFieldQuery(const String& field, const String& queryText);
327 
330  virtual QueryPtr getFieldQuery(const String& field, const String& queryText, int32_t slop);
331 
333  virtual QueryPtr getRangeQuery(const String& field, const String& part1, const String& part2, bool inclusive);
334 
337  BooleanQueryPtr newBooleanQuery(bool disableCoord);
338 
344 
349 
353 
357 
362 
368  QueryPtr newFuzzyQuery(const TermPtr& term, double minimumSimilarity, int32_t prefixLength);
369 
376  QueryPtr newRangeQuery(const String& field, const String& part1, const String& part2, bool inclusive);
377 
381 
386 
395 
404  virtual QueryPtr getBooleanQuery(Collection<BooleanClausePtr> clauses, bool disableCoord);
405 
421  virtual QueryPtr getWildcardQuery(const String& field, const String& termStr);
422 
437  virtual QueryPtr getPrefixQuery(const String& field, const String& termStr);
438 
445  virtual QueryPtr getFuzzyQuery(const String& field, const String& termStr, double minSimilarity);
446 
449  String discardEscapeChar(const String& input);
450 
452  static int32_t hexToInt(wchar_t c);
453 
456  static String escape(const String& s);
457 
458  bool jj_2_1(int32_t xla);
459  bool jj_3R_2();
460  bool jj_3_1();
461  bool jj_3R_3();
462 
464  bool jj_scan_token(int32_t kind);
465  int32_t jj_ntk();
466  void jj_add_error_token(int32_t kind, int32_t pos);
468  void jj_save(int32_t index, int32_t xla);
469 };
470 
471 }
472 
473 #endif
Lucene::QueryParser::token
QueryParserTokenPtr token
Current token.
Definition: QueryParser.h:166
Lucene::QueryParser::setFuzzyPrefixLength
void setFuzzyPrefixLength(int32_t fuzzyPrefixLength)
Set the prefix length for fuzzy queries. Default is 0.
Lucene::DateTools::Resolution
Resolution
Definition: DateTools.h:35
Lucene::QueryParser::fuzzyPrefixLength
int32_t fuzzyPrefixLength
Definition: QueryParser.h:150
Lucene::QueryParser::allowLeadingWildcard
bool allowLeadingWildcard
Definition: QueryParser.h:143
QueryParserConstants.h
Lucene::QueryParser::setDateResolution
void setDateResolution(const String &fieldName, DateTools::Resolution dateResolution)
Sets the date resolution used by RangeQueries for a specific field.
Lucene::QueryParser::MOD_REQ
static const int32_t MOD_REQ
Definition: QueryParser.h:98
LUCENE_CLASS
#define LUCENE_CLASS(Name)
Definition: LuceneObject.h:24
Lucene::QueryParser::getToken
virtual QueryParserTokenPtr getToken(int32_t index)
Get the specific Token.
Lucene::QueryParser::jj_ntk
int32_t jj_ntk()
Lucene::QueryParser::setRangeCollator
void setRangeCollator(const CollatorPtr &rc)
Sets the collator used to determine index term inclusion in ranges for RangeQuerys.
Lucene::QueryParser::JJCallsPtr
boost::shared_ptr< JJCalls > JJCallsPtr
Definition: QueryParser.h:115
Lucene::TermPtr
boost::shared_ptr< Term > TermPtr
Definition: LuceneTypes.h:233
Lucene::QueryParserTokenPtr
boost::shared_ptr< QueryParserToken > QueryParserTokenPtr
Definition: LuceneTypes.h:273
Lucene::QueryParser::generateParseException
virtual void generateParseException()
Generate QueryParserError exception.
Lucene::Collection< int32_t >
Lucene::QueryParser::newRangeQuery
QueryPtr newRangeQuery(const String &field, const String &part1, const String &part2, bool inclusive)
Builds a new TermRangeQuery instance.
Lucene::QueryParser::getFieldQuery
virtual QueryPtr getFieldQuery(const String &field, const String &queryText, int32_t slop)
Base implementation delegates to getFieldQuery(const String&, const String&). This method may be over...
Lucene::QueryParser::Operator
Operator
The default operator for parsing queries. Use QueryParser#setDefaultOperator to change it.
Definition: QueryParser.h:89
Lucene::QueryParser::CONJ_AND
static const int32_t CONJ_AND
Definition: QueryParser.h:93
Lucene::QueryParser::analyzer
AnalyzerPtr analyzer
Definition: QueryParser.h:146
Lucene::LuceneVersion::Version
Version
Definition: Constants.h:40
Lucene::QueryParser::getDateResolution
DateTools::Resolution getDateResolution(const String &fieldName)
Returns the date resolution that is used by RangeQueries for the given field. Returns null,...
Lucene::QueryParser::rangeCollator
CollatorPtr rangeCollator
Definition: QueryParser.h:160
Lucene::QueryParser::lowercaseExpandedTerms
bool lowercaseExpandedTerms
Definition: QueryParser.h:141
Lucene::QueryParser::setDateResolution
void setDateResolution(DateTools::Resolution dateResolution)
Sets the default date resolution used by RangeQueries for fields for which no specific date resolutio...
Lucene::QueryParser::ConstructParser
void ConstructParser(const QueryParserCharStreamPtr &stream, const QueryParserTokenManagerPtr &tokenMgr)
Construct query parser with supplied QueryParserCharStream or TokenManager.
Lucene::QueryParser::fuzzyMinSim
double fuzzyMinSim
Definition: QueryParser.h:149
Lucene::QueryParser::getEnablePositionIncrements
bool getEnablePositionIncrements()
Lucene::QueryParser::getPrefixQuery
virtual QueryPtr getPrefixQuery(const String &field, const String &termStr)
Factory method for generating a query (similar to getWildcardQuery). Called when parser parses an inp...
Lucene::QueryParser::newTermQuery
QueryPtr newTermQuery(const TermPtr &term)
Builds a new TermQuery instance.
Lucene::QueryParser::getAnalyzer
AnalyzerPtr getAnalyzer()
Lucene::QueryPtr
boost::shared_ptr< Query > QueryPtr
Definition: LuceneTypes.h:420
Lucene::QueryParser::jj_endpos
int32_t jj_endpos
Definition: QueryParser.h:138
Lucene::QueryParser::getFuzzyQuery
virtual QueryPtr getFuzzyQuery(const String &field, const String &termStr, double minSimilarity)
Factory method for generating a query (similar to getWildcardQuery). Called when parser parses an inp...
Lucene::QueryParser::getDefaultOperator
Operator getDefaultOperator()
Gets implicit operator setting, which will be either AND_OPERATOR or OR_OPERATOR.
Lucene::QueryParser::getWildcardQuery
virtual QueryPtr getWildcardQuery(const String &field, const String &termStr)
Factory method for generating a query. Called when parser parses an input term token that contains on...
Lucene::QueryParser::getFuzzyMinSim
double getFuzzyMinSim()
Get the minimal similarity for fuzzy queries.
Lucene::HashMap< String, DateTools::Resolution >
Lucene::QueryParser::newFuzzyQuery
QueryPtr newFuzzyQuery(const TermPtr &term, double minimumSimilarity, int32_t prefixLength)
Builds a new FuzzyQuery instance.
Lucene::QueryParser::getAllowLeadingWildcard
bool getAllowLeadingWildcard()
Lucene::QueryParser::jj_gen
int32_t jj_gen
Definition: QueryParser.h:109
Lucene::QueryParser::QueryParser
QueryParser(LuceneVersion::Version matchVersion, const String &field, const AnalyzerPtr &analyzer)
Constructs a query parser.
Lucene::QueryParser::newMatchAllDocsQuery
QueryPtr newMatchAllDocsQuery()
Builds a new MatchAllDocsQuery instance.
Lucene::QueryParser::TopLevelQuery
virtual QueryPtr TopLevelQuery(const String &field)
This makes sure that there is no garbage after the query string.
Lucene::QueryParser::token_source
QueryParserTokenManagerPtr token_source
Generated Token Manager.
Definition: QueryParser.h:163
Lucene::BooleanQueryPtr
boost::shared_ptr< BooleanQuery > BooleanQueryPtr
Definition: LuceneTypes.h:279
Lucene::QueryParser::locale
std::locale locale
Definition: QueryParser.h:151
Lucene::QueryParser::ReInit
virtual void ReInit(const QueryParserTokenManagerPtr &tokenMgr)
Reinitialise.
Lucene::QueryParser::JJCalls
Definition: QueryParser.h:118
Lucene::QueryParser::jj_kind
int32_t jj_kind
Definition: QueryParser.h:136
Lucene::CollatorPtr
boost::shared_ptr< Collator > CollatorPtr
Definition: LuceneTypes.h:525
Lucene::MultiPhraseQueryPtr
boost::shared_ptr< MultiPhraseQuery > MultiPhraseQueryPtr
Definition: LuceneTypes.h:385
Lucene::QueryParser::ParseClause
virtual QueryPtr ParseClause(const String &field)
Lucene::QueryParser::jj_gc
int32_t jj_gc
Definition: QueryParser.h:132
Lucene::QueryParser::JJCalls::gen
int32_t gen
Definition: QueryParser.h:124
Lucene::QueryParser::newMultiPhraseQuery
MultiPhraseQueryPtr newMultiPhraseQuery()
Builds a new MultiPhraseQuery instance.
BooleanClause.h
Lucene::QueryParser::phraseSlop
int32_t phraseSlop
Definition: QueryParser.h:148
Lucene::QueryParser::jj_save
void jj_save(int32_t index, int32_t xla)
Lucene::QueryParser::setMultiTermRewriteMethod
void setMultiTermRewriteMethod(const RewriteMethodPtr &method)
By default QueryParser uses MultiTermQuery#CONSTANT_SCORE_AUTO_REWRITE_DEFAULT when creating a Prefix...
Lucene::AnalyzerPtr
boost::shared_ptr< Analyzer > AnalyzerPtr
Definition: LuceneTypes.h:20
Lucene::QueryParser::MOD_NONE
static const int32_t MOD_NONE
Definition: QueryParser.h:96
Lucene::QueryParser::main
static int main(Collection< String > args)
Command line tool to test QueryParser, using SimpleAnalyzer.
Lucene::QueryParser::CONJ_OR
static const int32_t CONJ_OR
Definition: QueryParser.h:94
Lucene::QueryParser::~QueryParser
virtual ~QueryParser()
Lucene::QueryParser::MOD_NOT
static const int32_t MOD_NOT
Definition: QueryParser.h:97
Lucene::QueryParser::hexToInt
static int32_t hexToInt(wchar_t c)
Returns the numeric value of the hexadecimal character.
Lucene::QueryParser::getBooleanQuery
virtual QueryPtr getBooleanQuery(Collection< BooleanClausePtr > clauses, bool disableCoord)
Factory method for generating query, given a set of clauses. By default creates a boolean query compo...
Lucene
Definition: AbstractAllTermDocs.h:12
Lucene::QueryParser::jj_lasttokens
Collection< int32_t > jj_lasttokens
Definition: QueryParser.h:137
Lucene::QueryParser::jj_expentries
Collection< Collection< int32_t > > jj_expentries
Definition: QueryParser.h:134
Lucene::LuceneObject
Base class for all Lucene classes.
Definition: LuceneObject.h:31
Lucene::QueryParserTokenManagerPtr
boost::shared_ptr< QueryParserTokenManager > QueryParserTokenManagerPtr
Definition: LuceneTypes.h:274
Lucene::QueryParser::QueryParser
QueryParser(const QueryParserTokenManagerPtr &tokenMgr)
Constructor with generated Token Manager.
Lucene::QueryParser::ParseQuery
virtual QueryPtr ParseQuery(const String &field)
Lucene::RewriteMethodPtr
boost::shared_ptr< RewriteMethod > RewriteMethodPtr
Definition: LuceneTypes.h:425
Lucene::QueryParser::fieldToDateResolution
MapStringResolution fieldToDateResolution
Definition: QueryParser.h:157
Lucene::QueryParser::getLocale
std::locale getLocale()
Returns current locale, allowing access by subclasses.
Lucene::QueryParser::field
String field
Definition: QueryParser.h:147
Lucene::QueryParser::setLowercaseExpandedTerms
void setLowercaseExpandedTerms(bool lowercaseExpandedTerms)
Whether terms of wildcard, prefix, fuzzy and range queries are to be automatically lower-cased or not...
Lucene::QueryParser::jj_scanpos
QueryParserTokenPtr jj_scanpos
Definition: QueryParser.h:105
Lucene::QueryParser::newPrefixQuery
QueryPtr newPrefixQuery(const TermPtr &prefix)
Builds a new PrefixQuery instance.
Lucene::QueryParser::dateResolution
DateTools::Resolution dateResolution
Definition: QueryParser.h:154
Lucene::QueryParser::QueryParser
QueryParser(const QueryParserCharStreamPtr &stream)
Constructor with user supplied QueryParserCharStream.
Lucene::QueryParserConstants
Token literal values and constants.
Definition: QueryParserConstants.h:15
Lucene::QueryParser::_operator
Operator _operator
The actual operator that parser uses to combine query terms.
Definition: QueryParser.h:101
Lucene::MapStringResolution
HashMap< String, DateTools::Resolution > MapStringResolution
Definition: QueryParser.h:16
Lucene::QueryParser::enablePositionIncrements
bool enablePositionIncrements
Definition: QueryParser.h:144
Lucene::QueryParser::addClause
virtual void addClause(Collection< BooleanClausePtr > clauses, int32_t conj, int32_t mods, const QueryPtr &q)
Lucene::QueryParser::jj_2_rtns
Collection< JJCallsPtr > jj_2_rtns
Definition: QueryParser.h:130
Lucene::QueryParserCharStreamPtr
boost::shared_ptr< QueryParserCharStream > QueryParserCharStreamPtr
Definition: LuceneTypes.h:271
Lucene::QueryParser::setEnablePositionIncrements
void setEnablePositionIncrements(bool enable)
Set to true to enable position increments in result query.
Lucene::QueryParser::enable_tracing
virtual void enable_tracing()
Enable tracing.
Lucene::QueryParser::JJCalls::first
QueryParserTokenPtr first
Definition: QueryParser.h:125
Lucene::QueryParser::setPhraseSlop
void setPhraseSlop(int32_t phraseSlop)
Sets the default slop for phrases. If zero, then exact phrase matches are required....
Lucene::QueryParser::setFuzzyMinSim
void setFuzzyMinSim(double fuzzyMinSim)
Set the minimum similarity for fuzzy queries. Default is 0.5.
Lucene::QueryParser::getMultiTermRewriteMethod
RewriteMethodPtr getMultiTermRewriteMethod()
Lucene::QueryParser::newPhraseQuery
PhraseQueryPtr newPhraseQuery()
Builds a new PhraseQuery instance.
Lucene::QueryParser::getRangeQuery
virtual QueryPtr getRangeQuery(const String &field, const String &part1, const String &part2, bool inclusive)
Builds a new TermRangeQuery instance for given min/max parts.
Lucene::QueryParser::setLocale
void setLocale(std::locale locale)
Set locale used by date range parsing.
Lucene::QueryParser::jj_3R_2
bool jj_3R_2()
Lucene::QueryParser::getLowercaseExpandedTerms
bool getLowercaseExpandedTerms()
Lucene::QueryParser::setAllowLeadingWildcard
void setAllowLeadingWildcard(bool allowLeadingWildcard)
Set to true to allow leading wildcard characters.
Lucene::QueryParser::escape
static String escape(const String &s)
Returns a String where those characters that QueryParser expects to be escaped are escaped by a prece...
Lucene::QueryParser::JJCalls::JJCalls
JJCalls()
Definition: QueryParser.h:119
Lucene::QueryParser::jj_add_error_token
void jj_add_error_token(int32_t kind, int32_t pos)
Lucene::QueryParser::getFieldQuery
virtual QueryPtr getFieldQuery(const String &field, const String &queryText)
Use the analyzer to get all the tokens, and then build a TermQuery, PhraseQuery, or nothing based on ...
Lucene::QueryParser::jj_consume_token
QueryParserTokenPtr jj_consume_token(int32_t kind)
Lucene::QueryParser::jj_expentry
Collection< int32_t > jj_expentry
Definition: QueryParser.h:135
Lucene::QueryParser::setDefaultOperator
void setDefaultOperator(Operator op)
Sets the boolean operator of the QueryParser. In default mode (OR_OPERATOR) terms without any modifie...
Lucene::QueryParser::newBooleanClause
BooleanClausePtr newBooleanClause(const QueryPtr &q, BooleanClause::Occur occur)
Builds a new BooleanClause instance.
Lucene::QueryParser::Modifiers
int32_t Modifiers()
Lucene::QueryParser::getBooleanQuery
virtual QueryPtr getBooleanQuery(Collection< BooleanClausePtr > clauses)
Factory method for generating query, given a set of clauses. By default creates a boolean query compo...
Lucene::QueryParser::ParseTerm
virtual QueryPtr ParseTerm(const String &field)
Lucene::QueryParser::jj_lastpos
QueryParserTokenPtr jj_lastpos
Definition: QueryParser.h:106
Lucene::QueryParser::getField
String getField()
Lucene::QueryParser::OR_OPERATOR
@ OR_OPERATOR
Definition: QueryParser.h:89
Lucene::QueryParser::JJCalls::arg
int32_t arg
Definition: QueryParser.h:126
Lucene::QueryParser::jj_la1
Collection< int32_t > jj_la1
Definition: QueryParser.h:110
Lucene::QueryParser::getNextToken
virtual QueryParserTokenPtr getNextToken()
Get the next Token.
Lucene::QueryParser::jj_3_1
bool jj_3_1()
Lucene::QueryParser::getRangeCollator
CollatorPtr getRangeCollator()
Lucene::QueryParser::jj_nt
QueryParserTokenPtr jj_nt
Next token.
Definition: QueryParser.h:169
Lucene::QueryParser::newBooleanQuery
BooleanQueryPtr newBooleanQuery(bool disableCoord)
Builds a new BooleanQuery instance.
DateTools.h
Lucene::QueryParser::disable_tracing
virtual void disable_tracing()
Disable tracing.
Lucene::QueryParser::getFuzzyPrefixLength
int32_t getFuzzyPrefixLength()
Get the prefix length for fuzzy queries.
Lucene::QueryParser::jj_rescan
bool jj_rescan
Definition: QueryParser.h:131
Lucene::QueryParser::jj_scan_token
bool jj_scan_token(int32_t kind)
Lucene::PhraseQueryPtr
boost::shared_ptr< PhraseQuery > PhraseQueryPtr
Definition: LuceneTypes.h:411
Lucene::QueryParser::JJCalls::next
JJCallsPtr next
Definition: QueryParser.h:127
Lucene::QueryParser::ReInit
virtual void ReInit(const QueryParserCharStreamPtr &stream)
Reinitialise.
Lucene::QueryParser::jj_2_1
bool jj_2_1(int32_t xla)
Lucene::QueryParser
The most important method is parse(const String&).
Definition: QueryParser.h:70
Lucene::QueryParser::multiTermRewriteMethod
RewriteMethodPtr multiTermRewriteMethod
Definition: QueryParser.h:142
Lucene::QueryParser::newWildcardQuery
QueryPtr newWildcardQuery(const TermPtr &term)
Builds a new WildcardQuery instance.
Lucene::QueryParser::discardEscapeChar
String discardEscapeChar(const String &input)
Returns a String where the escape char has been removed, or kept only once if there was a double esca...
Lucene::QueryParser::getPhraseSlop
int32_t getPhraseSlop()
Gets the default slop for phrases.
Lucene::QueryParser::jj_rescan_token
void jj_rescan_token()
Lucene::BooleanClause::Occur
Occur
Specifies how clauses are to occur in matching documents.
Definition: BooleanClause.h:18
Lucene::BooleanClausePtr
boost::shared_ptr< BooleanClause > BooleanClausePtr
Definition: LuceneTypes.h:278
Lucene::QueryParser::jj_3R_3
bool jj_3R_3()
Lucene::QueryParser::_jj_ntk
int32_t _jj_ntk
Next token.
Definition: QueryParser.h:104
Lucene::QueryParser::jj_la
int32_t jj_la
Definition: QueryParser.h:108
Lucene::QueryParser::CONJ_NONE
static const int32_t CONJ_NONE
Definition: QueryParser.h:92
Lucene::QueryParser::Conjunction
int32_t Conjunction()
Query ::= ( Clause )* Clause ::= ["+", "-"] [ ":"] ( | "(" Query ")" )

clucene.sourceforge.net