Class 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 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 Detail

      • StandardQueryParser

        public StandardQueryParser​(org.apache.lucene.analysis.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

      • 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.
      • 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.

      • 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.

      • setMultiTermRewriteMethod

        public void setMultiTermRewriteMethod​(org.apache.lucene.search.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.
      • 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.
      • 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.
        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​(org.apache.lucene.analysis.Analyzer analyzer)
      • getAnalyzer

        public org.apache.lucene.analysis.Analyzer getAnalyzer()
      • 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​(org.apache.lucene.document.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 org.apache.lucene.document.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,​org.apache.lucene.document.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,​org.apache.lucene.document.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,​org.apache.lucene.document.DateTools.Resolution> dateRes)
        Sets the DateTools.Resolution used for each field
        Parameters:
        dateRes - a collection that maps a field to its DateTools.Resolution