This class is generated by JavaCC. The only method that clients should need
to call is
parse().
The syntax for query strings is as follows:
A Query is a series of clauses.
A clause may be prefixed by:
- a plus (
+
) or a minus (-
) sign, indicating
that the clause is required or prohibited respectively; or
- a term followed by a colon, indicating the field to be searched.
This enables one to construct queries which search multiple fields.
A clause may be either:
- a term, indicating all the documents that contain this term; or
- a nested query, enclosed in parentheses. Note that this may be used
with a
+
/-
prefix to require any of a set of
terms.
Thus, in BNF, the query grammar is:
Query ::= ( Clause )*
Clause ::= ["+", "-"] [<TERM> ":"] ( <TERM> | "(" Query ")" )
Examples of appropriately formatted queries can be found in the
test cases.
addClause
protected void addClause(Vector clauses,
int conj,
int mods,
Query q)
disable_tracing
public final void disable_tracing()
enable_tracing
public final void enable_tracing()
escape
public static String escape(String s)
Returns a String where those characters that QueryParser
expects to be escaped are escaped, i.e. preceded by a \
.
getAnalyzer
public Analyzer getAnalyzer()
getBooleanQuery
protected Query getBooleanQuery(Vector clauses)
throws ParseException
Factory method for generating query, given a set of clauses.
By default creates a boolean query composed of clauses passed in.
Can be overridden by extending classes, to modify query being
returned.
getField
public String getField()
getFieldQuery
protected Query getFieldQuery(String field,
String queryText)
throws ParseException
getFieldQuery
protected Query getFieldQuery(String field,
String queryText,
int slop)
throws ParseException
Base implementation delegates to
getFieldQuery(String,String)
.
This method may be overridden, for example, to return
a SpanNearQuery instead of a PhraseQuery.
getFieldQuery
protected Query getFieldQuery(String field,
Analyzer analyzer,
String queryText)
throws ParseException
Note that parameter analyzer is ignored. Calls inside the parser always
use class member analyser. This method will be deprecated and substituted
by
getFieldQuery(String,String)
in future versions of Lucene.
Currently overwriting either of these methods works.
getFieldQuery
protected Query getFieldQuery(String field,
Analyzer analyzer,
String queryText,
int slop)
throws ParseException
Base implementation delegates to
getFieldQuery(String,Analyzer,String)
.
This method may be overwritten, for example, to return
a SpanNearQuery instead of a PhraseQuery.
Note that parameter analyzer is ignored. Calls inside the parser always
use class member analyser. This method will be deprecated and substituted
by
getFieldQuery(String,String,int)
in future versions of Lucene.
Currently overwriting either of these methods works.
getFuzzyMinSim
public float getFuzzyMinSim()
Get the default minimal similarity for fuzzy queries.
getFuzzyQuery
protected Query getFuzzyQuery(String field,
String termStr)
throws ParseException
Factory method for generating a query (similar to
(
getWildcardQuery(String,String)
). Called when parser parses
an input term token that has the fuzzy suffix (~) appended.
field
- Name of the field query will use.termStr
- Term token to use for building term for the query
- Resulting
Query
built for the term
getFuzzyQuery
protected Query getFuzzyQuery(String field,
String termStr,
float minSimilarity)
throws ParseException
Factory method for generating a query (similar to
(
getWildcardQuery(String,String)
). Called when parser parses
an input term token that has the fuzzy suffix (~floatNumber) appended.
field
- Name of the field query will use.termStr
- Term token to use for building term for the queryminSimilarity
- the minimum similarity required for a fuzzy match
- Resulting
Query
built for the term
getLocale
public Locale getLocale()
Returns current locale, allowing access by subclasses.
getLowercaseWildcardTerms
public boolean getLowercaseWildcardTerms()
getNextToken
public final Token getNextToken()
getOperator
public int getOperator()
Gets implicit operator setting, which will be either DEFAULT_OPERATOR_AND
or DEFAULT_OPERATOR_OR.
getPhraseSlop
public int getPhraseSlop()
Gets the default slop for phrases.
getPrefixQuery
protected Query getPrefixQuery(String field,
String termStr)
throws ParseException
Factory method for generating a query (similar to
(
getWildcardQuery(String,String)
). Called when parser parses an input term
token that uses prefix notation; that is, contains a single '*' wildcard
character as its last character. Since this is a special case
of generic wildcard term, and such a query can be optimized easily,
this usually results in a different query object.
Depending on settings, a prefix term may be lower-cased
automatically. It will not go through the default Analyzer,
however, since normal Analyzers are unlikely to work properly
with wildcard templates.
Can be overridden by extending classes, to provide custom handling for
wild card queries, which may be necessary due to missing analyzer calls.
field
- Name of the field query will use.termStr
- Term token to use for building term for the query
(without trailing '*' character!)
- Resulting
Query
built for the term
getRangeQuery
protected Query getRangeQuery(String field,
String part1,
String part2,
boolean inclusive)
throws ParseException
getRangeQuery
protected Query getRangeQuery(String field,
Analyzer analyzer,
String part1,
String part2,
boolean inclusive)
throws ParseException
Note that parameter analyzer is ignored. Calls inside the parser always
use class member analyser. This method will be deprecated and substituted
by
getRangeQuery(String,String,String,boolean)
in future versions of Lucene.
Currently overwriting either of these methods works.
getToken
public final Token getToken(int index)
getWildcardQuery
protected Query getWildcardQuery(String field,
String termStr)
throws ParseException
Factory method for generating a query. Called when parser
parses an input term token that contains one or more wildcard
characters (? and *), but is not a prefix term token (one
that has just a single * character at the end)
Depending on settings, prefix term may be lower-cased
automatically. It will not go through the default Analyzer,
however, since normal Analyzers are unlikely to work properly
with wildcard templates.
Can be overridden by extending classes, to provide custom handling for
wildcard queries, which may be necessary due to missing analyzer calls.
field
- Name of the field query will use.termStr
- Term token that contains one or more wild card
characters (? or *), but is not simple prefix term
- Resulting
Query
built for the term
main
public static void main(String[] args)
throws Exception
parse
public Query parse(String query)
throws ParseException
Parses a query string, returning a
Query.
query
- the query string to be parsed.
parse
public static Query parse(String query,
String field,
Analyzer analyzer)
throws ParseException
Parses a query string, returning a
Query
.
query
- the query string to be parsed.field
- the default field for query terms.analyzer
- used to find terms in the query text.
setFuzzyMinSim
public void setFuzzyMinSim(float fuzzyMinSim)
Set the default minimum similarity for fuzzy queries.
setLocale
public void setLocale(Locale locale)
Set locale used by date range parsing.
setLowercaseWildcardTerms
public void setLowercaseWildcardTerms(boolean lowercaseWildcardTerms)
setOperator
public void setOperator(int operator)
Sets the boolean operator of the QueryParser.
In classic mode (DEFAULT_OPERATOR_OR
) terms without any modifiers
are considered optional: for example capital of Hungary
is equal to
capital OR of OR Hungary
.
In DEFAULT_OPERATOR_AND
terms are considered to be in conjuction: the
above mentioned query is parsed as capital AND of AND Hungary
setPhraseSlop
public void setPhraseSlop(int phraseSlop)
Sets the default slop for phrases. If zero, then exact phrase matches
are required. Default value is zero.