## org.apache.lucene.queryParser.standard
Class StandardQueryParser

    java.lang.Object
      org.apache.lucene.queryParser.core.QueryParserHelper
          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:

StandardQueryParser queryParserHelper = new StandardQueryParser();
Query query = queryParserHelper.parse("a AND b", "defaultField");

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

// the query config handler returned by `StandardQueryParser` is a `StandardQueryConfigHandler`
queryParserHelper.getQueryConfigHandler().setAnalyzer(new WhitespaceAnalyzer());

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

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 query syntax documentation.

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:
  StandardQueryParser qp = new StandardQueryParser(); qp.getQueryConfigHandler().setAnalyzer(analyzer);

  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 `RangeQueryNode`s

### 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`