org.apache.lucene.queryParser.standard
Class StandardQueryParser

java.lang.Object
  extended by org.apache.lucene.queryParser.core.QueryParserHelper
      extended by org.apache.lucene.queryParser.standard.StandardQueryParser
Direct Known Subclasses:
PrecedenceQueryParser

public class StandardQueryParser
extends QueryParserHelper

This class is a helper that enables users to easily use the Lucene query parser.

To construct a Query object from a query string, use the parse(String, String) method:

To change any configuration before parsing the query string do, for example:

The syntax for query strings is as follows (copied from the old QueryParser javadoc):

The text parser used by this helper is a StandardSyntaxParser.

The query node processor used by this helper is a StandardQueryNodeProcessorPipeline.

The builder used by this helper is a StandardQueryTreeBuilder.

See Also:
StandardQueryParser, StandardQueryConfigHandler, StandardSyntaxParser, StandardQueryNodeProcessorPipeline, StandardQueryTreeBuilder

Constructor Summary
StandardQueryParser()
          Constructs a StandardQueryParser object.
StandardQueryParser(Analyzer analyzer)
          Constructs a StandardQueryParser object and sets an Analyzer to it.
 
Method Summary
 boolean getAllowLeadingWildcard()
           
 Analyzer getAnalyzer()
           
 DateTools.Resolution getDateResolution()
          Returns the default DateTools.Resolution used for certain field when no DateTools.Resolution is defined for this field.
 Map<CharSequence,DateTools.Resolution> getDateResolutionMap()
          Returns the field to DateTools.Resolution map used to normalize each date field.
 StandardQueryConfigHandler.Operator getDefaultOperator()
          Gets implicit operator setting, which will be either StandardQueryConfigHandler.Operator.AND or StandardQueryConfigHandler.Operator.OR.
 boolean getEnablePositionIncrements()
           
 Map<String,Float> getFieldsBoost()
          Returns the field to boost map used to set boost for each field.
 float getFuzzyMinSim()
          Get the minimal similarity for fuzzy queries.
 int getFuzzyPrefixLength()
          Get the prefix length for fuzzy queries.
 Locale getLocale()
          Returns current locale, allowing access by subclasses.
 boolean getLowercaseExpandedTerms()
           
 void getMultiFields(CharSequence[] fields)
          Returns the fields used to expand the query when the field for a certain query is null
 MultiTermQuery.RewriteMethod getMultiTermRewriteMethod()
           
 Map<String,NumericConfig> getNumericConfigMap()
           
 int getPhraseSlop()
          Gets the default slop for phrases.
 Collator getRangeCollator()
           
 Query parse(String query, String defaultField)
          Overrides QueryParserHelper.parse(String, String) so it casts the return object to Query.
 void setAllowLeadingWildcard(boolean allowLeadingWildcard)
          Set to true to allow leading wildcard characters.
 void setAnalyzer(Analyzer analyzer)
           
 void setDateResolution(DateTools.Resolution dateResolution)
          Sets the default DateTools.Resolution used for certain field when no DateTools.Resolution is defined for this field.
 void setDateResolution(Map<CharSequence,DateTools.Resolution> dateRes)
          Deprecated. this method was renamed to setDateResolutionMap(Map)
 void setDateResolutionMap(Map<CharSequence,DateTools.Resolution> dateRes)
          Sets the DateTools.Resolution used for each field
 void setDefaultOperator(DefaultOperatorAttribute.Operator operator)
          Deprecated.  
 void setDefaultOperator(StandardQueryConfigHandler.Operator operator)
          Sets the boolean operator of the QueryParser.
 void setDefaultPhraseSlop(int defaultPhraseSlop)
          Deprecated. renamed to setPhraseSlop(int)
 void setEnablePositionIncrements(boolean enabled)
          Set to true to enable position increments in result query.
 void setFieldsBoost(Map<String,Float> boosts)
          Sets the boost used for each field.
 void setFuzzyMinSim(float fuzzyMinSim)
          Set the minimum similarity for fuzzy queries.
 void setFuzzyPrefixLength(int fuzzyPrefixLength)
          Set the prefix length for fuzzy queries.
 void setLocale(Locale locale)
          Set locale used by date range parsing.
 void setLowercaseExpandedTerms(boolean lowercaseExpandedTerms)
          Set to true to allow leading wildcard characters.
 void setMultiFields(CharSequence[] fields)
          Set the fields a query should be expanded to when the field is null
 void setMultiTermRewriteMethod(MultiTermQuery.RewriteMethod method)
          By default, it uses MultiTermQuery.CONSTANT_SCORE_AUTO_REWRITE_DEFAULT when creating a prefix, wildcard and range queries.
 void setNumericConfigMap(Map<String,NumericConfig> numericConfigMap)
           
 void setPhraseSlop(int defaultPhraseSlop)
          Sets the default slop for phrases.
 void setRangeCollator(Collator collator)
          Sets the collator used to determine index term inclusion in ranges for RangeQuerys.
 String toString()
           
 
Methods inherited from class org.apache.lucene.queryParser.core.QueryParserHelper
getQueryBuilder, getQueryConfigHandler, getQueryNodeProcessor, getSyntaxParser, setQueryBuilder, setQueryConfigHandler, setQueryNodeProcessor, setSyntaxParser
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

StandardQueryParser

public StandardQueryParser()
Constructs a StandardQueryParser object.


StandardQueryParser

public StandardQueryParser(Analyzer analyzer)
Constructs a StandardQueryParser object and sets an Analyzer to it. The same as:

Parameters:
analyzer - the analyzer to be used by this query parser helper
Method Detail

toString

public String toString()
Overrides:
toString in class Object

parse

public Query parse(String query,
                   String defaultField)
            throws QueryNodeException
Overrides QueryParserHelper.parse(String, String) so it casts the return object to Query. For more reference about this method, check QueryParserHelper.parse(String, String).

Overrides:
parse in class QueryParserHelper
Parameters:
query - the query string
defaultField - the default field used by the text parser
Returns:
the object built from the query
Throws:
QueryNodeException - if something wrong happens along the three phases

getDefaultOperator

public StandardQueryConfigHandler.Operator getDefaultOperator()
Gets implicit operator setting, which will be either StandardQueryConfigHandler.Operator.AND or StandardQueryConfigHandler.Operator.OR.


setRangeCollator

public void setRangeCollator(Collator collator)
Sets the collator used to determine index term inclusion in ranges for RangeQuerys.

WARNING: Setting the rangeCollator to a non-null collator using this method will cause every single index Term in the Field referenced by lowerTerm and/or upperTerm to be examined. Depending on the number of index Terms in this Field, the operation could be very slow.

Parameters:
collator - the collator to use when constructing RangeQueryNodes

getRangeCollator

public Collator getRangeCollator()
Returns:
the collator used to determine index term inclusion in ranges for RangeQuerys.

setDefaultOperator

@Deprecated
public void setDefaultOperator(DefaultOperatorAttribute.Operator operator)
Deprecated. 

Sets the boolean operator of the QueryParser. In default mode ( StandardQueryConfigHandler.Operator.OR) terms without any modifiers are considered optional: for example capital of Hungary is equal to capital OR of OR Hungary.
In StandardQueryConfigHandler.Operator.AND mode terms are considered to be in conjunction: the above mentioned query is parsed as capital AND of AND Hungary


setDefaultOperator

public void setDefaultOperator(StandardQueryConfigHandler.Operator operator)
Sets the boolean operator of the QueryParser. In default mode ( StandardQueryConfigHandler.Operator.OR) terms without any modifiers are considered optional: for example capital of Hungary is equal to capital OR of OR Hungary.
In StandardQueryConfigHandler.Operator.AND mode terms are considered to be in conjunction: the above mentioned query is parsed as capital AND of AND Hungary


setLowercaseExpandedTerms

public void setLowercaseExpandedTerms(boolean lowercaseExpandedTerms)
Set to true to allow leading wildcard characters.

When set, * or ? are allowed as the first character of a PrefixQuery and WildcardQuery. Note that this can produce very slow queries on big indexes.

Default: false.


getLowercaseExpandedTerms

public boolean getLowercaseExpandedTerms()
See Also:
setLowercaseExpandedTerms(boolean)

setAllowLeadingWildcard

public void setAllowLeadingWildcard(boolean allowLeadingWildcard)
Set to true to allow leading wildcard characters.

When set, * or ? are allowed as the first character of a PrefixQuery and WildcardQuery. Note that this can produce very slow queries on big indexes.

Default: false.


setEnablePositionIncrements

public void setEnablePositionIncrements(boolean enabled)
Set to true to enable position increments in result query.

When set, result phrase and multi-phrase queries will be aware of position increments. Useful when e.g. a StopFilter increases the position increment of the token that follows an omitted token.

Default: false.


getEnablePositionIncrements

public boolean getEnablePositionIncrements()
See Also:
setEnablePositionIncrements(boolean)

setMultiTermRewriteMethod

public void setMultiTermRewriteMethod(MultiTermQuery.RewriteMethod method)
By default, it uses MultiTermQuery.CONSTANT_SCORE_AUTO_REWRITE_DEFAULT when creating a prefix, wildcard and range queries. This implementation is generally preferable because it a) Runs faster b) Does not have the scarcity of terms unduly influence score c) avoids any TooManyListenersException exception. However, if your application really needs to use the old-fashioned boolean queries expansion rewriting and the above points are not relevant then use this change the rewrite method.


getMultiTermRewriteMethod

public MultiTermQuery.RewriteMethod getMultiTermRewriteMethod()
See Also:
setMultiTermRewriteMethod(org.apache.lucene.search.MultiTermQuery.RewriteMethod)

setMultiFields

public void setMultiFields(CharSequence[] fields)
Set the fields a query should be expanded to when the field is null

Parameters:
fields - the fields used to expand the query

getMultiFields

public void getMultiFields(CharSequence[] fields)
Returns the fields used to expand the query when the field for a certain query is null

Parameters:
fields - the fields used to expand the query

setFuzzyPrefixLength

public void setFuzzyPrefixLength(int fuzzyPrefixLength)
Set the prefix length for fuzzy queries. Default is 0.

Parameters:
fuzzyPrefixLength - The fuzzyPrefixLength to set.

setNumericConfigMap

public void setNumericConfigMap(Map<String,NumericConfig> numericConfigMap)

getNumericConfigMap

public Map<String,NumericConfig> getNumericConfigMap()

setLocale

public void setLocale(Locale locale)
Set locale used by date range parsing.


getLocale

public Locale getLocale()
Returns current locale, allowing access by subclasses.


setDefaultPhraseSlop

@Deprecated
public void setDefaultPhraseSlop(int defaultPhraseSlop)
Deprecated. renamed to setPhraseSlop(int)

Sets the default slop for phrases. If zero, then exact phrase matches are required. Default value is zero.


setPhraseSlop

public void setPhraseSlop(int defaultPhraseSlop)
Sets the default slop for phrases. If zero, then exact phrase matches are required. Default value is zero.


setAnalyzer

public void setAnalyzer(Analyzer analyzer)

getAnalyzer

public Analyzer getAnalyzer()

getAllowLeadingWildcard

public boolean getAllowLeadingWildcard()
See Also:
setAllowLeadingWildcard(boolean)

getFuzzyMinSim

public float getFuzzyMinSim()
Get the minimal similarity for fuzzy queries.


getFuzzyPrefixLength

public int getFuzzyPrefixLength()
Get the prefix length for fuzzy queries.

Returns:
Returns the fuzzyPrefixLength.

getPhraseSlop

public int getPhraseSlop()
Gets the default slop for phrases.


setFuzzyMinSim

public void setFuzzyMinSim(float fuzzyMinSim)
Set the minimum similarity for fuzzy queries. Default is defined on FuzzyQuery.defaultMinSimilarity.


setFieldsBoost

public void setFieldsBoost(Map<String,Float> boosts)
Sets the boost used for each field.

Parameters:
boosts - a collection that maps a field to its boost

getFieldsBoost

public Map<String,Float> getFieldsBoost()
Returns the field to boost map used to set boost for each field.

Returns:
the field to boost map

setDateResolution

public void setDateResolution(DateTools.Resolution dateResolution)
Sets the default DateTools.Resolution used for certain field when no DateTools.Resolution is defined for this field.

Parameters:
dateResolution - the default DateTools.Resolution

getDateResolution

public DateTools.Resolution getDateResolution()
Returns the default DateTools.Resolution used for certain field when no DateTools.Resolution is defined for this field.

Returns:
the default DateTools.Resolution

setDateResolution

@Deprecated
public void setDateResolution(Map<CharSequence,DateTools.Resolution> dateRes)
Deprecated. this method was renamed to setDateResolutionMap(Map)

Sets the DateTools.Resolution used for each field

Parameters:
dateRes - a collection that maps a field to its DateTools.Resolution

getDateResolutionMap

public Map<CharSequence,DateTools.Resolution> getDateResolutionMap()
Returns the field to DateTools.Resolution map used to normalize each date field.

Returns:
the field to DateTools.Resolution map

setDateResolutionMap

public void setDateResolutionMap(Map<CharSequence,DateTools.Resolution> dateRes)
Sets the DateTools.Resolution used for each field

Parameters:
dateRes - a collection that maps a field to its DateTools.Resolution