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


 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
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 
82  QueryParser(const QueryParserTokenManagerPtr& tokenMgr);
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;
127  JJCallsPtr next;
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
157  MapStringResolution fieldToDateResolution;
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 
177  AnalyzerPtr getAnalyzer();
178 
180  String getField();
181 
183  double getFuzzyMinSim();
184 
186  void setFuzzyMinSim(double fuzzyMinSim);
187 
190  int32_t getFuzzyPrefixLength();
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 
210  bool getAllowLeadingWildcard();
211 
217  void setEnablePositionIncrements(bool enable);
218 
220  bool getEnablePositionIncrements();
221 
227  void setDefaultOperator(Operator op);
228 
230  Operator getDefaultOperator();
231 
234  void setLowercaseExpandedTerms(bool lowercaseExpandedTerms);
235 
237  bool getLowercaseExpandedTerms();
238 
245  void setMultiTermRewriteMethod(const RewriteMethodPtr& method);
246 
248  RewriteMethodPtr getMultiTermRewriteMethod();
249 
251  void setLocale(std::locale locale);
252 
254  std::locale getLocale();
255 
260  void setDateResolution(DateTools::Resolution dateResolution);
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 
280  CollatorPtr getRangeCollator();
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 
304  virtual QueryParserTokenPtr getNextToken();
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:
320  void ConstructParser(const QueryParserCharStreamPtr& stream, const QueryParserTokenManagerPtr& tokenMgr);
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 
343  BooleanClausePtr newBooleanClause(const QueryPtr& q, BooleanClause::Occur occur);
344 
348  QueryPtr newTermQuery(const TermPtr& term);
349 
352  PhraseQueryPtr newPhraseQuery();
353 
356  MultiPhraseQueryPtr newMultiPhraseQuery();
357 
361  QueryPtr newPrefixQuery(const TermPtr& prefix);
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 
380  QueryPtr newMatchAllDocsQuery();
381 
385  QueryPtr newWildcardQuery(const TermPtr& term);
386 
394  virtual QueryPtr getBooleanQuery(Collection<BooleanClausePtr> clauses);
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 
463  QueryParserTokenPtr jj_consume_token(int32_t kind);
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);
467  void jj_rescan_token();
468  void jj_save(int32_t index, int32_t xla);
469 };
470 
471 }
472 
473 #endif
bool lowercaseExpandedTerms
Definition: QueryParser.h:141
bool jj_rescan
Definition: QueryParser.h:131
QueryParserTokenPtr jj_lastpos
Definition: QueryParser.h:106
CollatorPtr rangeCollator
Definition: QueryParser.h:160
Operator
The default operator for parsing queries. Use QueryParser#setDefaultOperator to change it...
Definition: QueryParser.h:89
AnalyzerPtr analyzer
Definition: QueryParser.h:146
boost::shared_ptr< Term > TermPtr
Definition: LuceneTypes.h:233
boost::shared_ptr< Analyzer > AnalyzerPtr
Definition: LuceneTypes.h:20
static const int32_t MOD_NONE
Definition: QueryParser.h:96
The most important method is parse(const String&).
Definition: QueryParser.h:70
Definition: QueryParser.h:89
boost::shared_ptr< MultiPhraseQuery > MultiPhraseQueryPtr
Definition: LuceneTypes.h:385
static const int32_t CONJ_AND
Definition: QueryParser.h:93
JJCallsPtr next
Definition: QueryParser.h:127
Collection< JJCallsPtr > jj_2_rtns
Definition: QueryParser.h:130
static const int32_t CONJ_NONE
Definition: QueryParser.h:92
static const int32_t MOD_NOT
Definition: QueryParser.h:97
boost::shared_ptr< BooleanClause > BooleanClausePtr
Definition: LuceneTypes.h:278
HashMap< String, DateTools::Resolution > MapStringResolution
Definition: QueryParser.h:16
Collection< int32_t > jj_la1
Definition: QueryParser.h:110
Definition: QueryParser.h:118
bool allowLeadingWildcard
Definition: QueryParser.h:143
static const int32_t MOD_REQ
Definition: QueryParser.h:98
boost::shared_ptr< QueryParserTokenManager > QueryParserTokenManagerPtr
Definition: LuceneTypes.h:274
QueryParserTokenPtr jj_scanpos
Definition: QueryParser.h:105
QueryParserTokenPtr jj_nt
Next token.
Definition: QueryParser.h:169
int32_t jj_kind
Definition: QueryParser.h:136
Operator _operator
The actual operator that parser uses to combine query terms.
Definition: QueryParser.h:101
int32_t arg
Definition: QueryParser.h:126
int32_t jj_gc
Definition: QueryParser.h:132
boost::shared_ptr< BooleanQuery > BooleanQueryPtr
Definition: LuceneTypes.h:279
bool enablePositionIncrements
Definition: QueryParser.h:144
boost::shared_ptr< Query > QueryPtr
Definition: LuceneTypes.h:420
boost::shared_ptr< RewriteMethod > RewriteMethodPtr
Definition: LuceneTypes.h:425
MapStringResolution fieldToDateResolution
Definition: QueryParser.h:157
Collection< Collection< int32_t > > jj_expentries
Definition: QueryParser.h:134
int32_t jj_la
Definition: QueryParser.h:108
static const int32_t CONJ_OR
Definition: QueryParser.h:94
Base class for all Lucene classes.
Definition: LuceneObject.h:31
int32_t gen
Definition: QueryParser.h:124
QueryParserTokenPtr first
Definition: QueryParser.h:125
Collection< int32_t > jj_expentry
Definition: QueryParser.h:135
#define LUCENE_CLASS(Name)
Definition: LuceneObject.h:24
QueryParserTokenManagerPtr token_source
Generated Token Manager.
Definition: QueryParser.h:163
DateTools::Resolution dateResolution
Definition: QueryParser.h:154
Definition: AbstractAllTermDocs.h:12
int32_t phraseSlop
Definition: QueryParser.h:148
std::locale locale
Definition: QueryParser.h:151
String field
Definition: QueryParser.h:147
boost::shared_ptr< PhraseQuery > PhraseQueryPtr
Definition: LuceneTypes.h:411
Resolution
Definition: DateTools.h:35
boost::shared_ptr< QueryParserToken > QueryParserTokenPtr
Definition: LuceneTypes.h:273
boost::shared_ptr< QueryParserCharStream > QueryParserCharStreamPtr
Definition: LuceneTypes.h:271
double fuzzyMinSim
Definition: QueryParser.h:149
JJCalls()
Definition: QueryParser.h:119
boost::shared_ptr< JJCalls > JJCallsPtr
Definition: QueryParser.h:115
Occur
Specifies how clauses are to occur in matching documents.
Definition: BooleanClause.h:18
Token literal values and constants.
Definition: QueryParserConstants.h:15
int32_t jj_gen
Definition: QueryParser.h:109
int32_t jj_endpos
Definition: QueryParser.h:138
Version
Definition: Constants.h:40
int32_t fuzzyPrefixLength
Definition: QueryParser.h:150
Collection< int32_t > jj_lasttokens
Definition: QueryParser.h:137
int32_t _jj_ntk
Next token.
Definition: QueryParser.h:104
QueryParserTokenPtr token
Current token.
Definition: QueryParser.h:166
boost::shared_ptr< Collator > CollatorPtr
Definition: LuceneTypes.h:525
RewriteMethodPtr multiTermRewriteMethod
Definition: QueryParser.h:142

clucene.sourceforge.net