org.apache.lucene.util

Class QueryBuilder

  • Direct Known Subclasses:
    QueryParserBase, SimpleQueryParser, SolrQueryParserBase


    public class QueryBuilder
    extends Object
    Creates queries from the Analyzer chain.

    Example usage:

       QueryBuilder builder = new QueryBuilder(analyzer);
       Query a = builder.createBooleanQuery("body", "just a test");
       Query b = builder.createPhraseQuery("body", "another test");
       Query c = builder.createMinShouldMatchQuery("body", "another test", 0.5f);
     

    This can also be used as a subclass for query parsers to make it easier to interact with the analysis chain. Factory methods such as newTermQuery are provided so that the generated queries can be customized.

    • Constructor Detail

      • QueryBuilder

        public QueryBuilder(Analyzer analyzer)
        Creates a new QueryBuilder using the given analyzer.
    • Method Detail

      • createBooleanQuery

        public Query createBooleanQuery(String field,
                                        String queryText)
        Creates a boolean query from the query text.

        This is equivalent to createBooleanQuery(field, queryText, Occur.SHOULD)

        Parameters:
        field - field name
        queryText - text to be passed to the analyzer
        Returns:
        TermQuery or BooleanQuery, based on the analysis of queryText
      • createBooleanQuery

        public Query createBooleanQuery(String field,
                                        String queryText,
                                        BooleanClause.Occur operator)
        Creates a boolean query from the query text.

        Parameters:
        field - field name
        queryText - text to be passed to the analyzer
        operator - operator used for clauses between analyzer tokens.
        Returns:
        TermQuery or BooleanQuery, based on the analysis of queryText
      • createPhraseQuery

        public Query createPhraseQuery(String field,
                                       String queryText)
        Creates a phrase query from the query text.

        This is equivalent to createPhraseQuery(field, queryText, 0)

        Parameters:
        field - field name
        queryText - text to be passed to the analyzer
        Returns:
        TermQuery, BooleanQuery, PhraseQuery, or MultiPhraseQuery, based on the analysis of queryText
      • createPhraseQuery

        public Query createPhraseQuery(String field,
                                       String queryText,
                                       int phraseSlop)
        Creates a phrase query from the query text.

        Parameters:
        field - field name
        queryText - text to be passed to the analyzer
        phraseSlop - number of other words permitted between words in query phrase
        Returns:
        TermQuery, BooleanQuery, PhraseQuery, or MultiPhraseQuery, based on the analysis of queryText
      • createMinShouldMatchQuery

        public Query createMinShouldMatchQuery(String field,
                                               String queryText,
                                               float fraction)
        Creates a minimum-should-match query from the query text.

        Parameters:
        field - field name
        queryText - text to be passed to the analyzer
        fraction - of query terms [0..1] that should match
        Returns:
        TermQuery or BooleanQuery, based on the analysis of queryText
      • setAnalyzer

        public void setAnalyzer(Analyzer analyzer)
        Sets the analyzer used to tokenize text.
      • setEnablePositionIncrements

        public void setEnablePositionIncrements(boolean enable)
        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: true.

      • createFieldQuery

        protected Query createFieldQuery(Analyzer analyzer,
                                         BooleanClause.Occur operator,
                                         String field,
                                         String queryText,
                                         boolean quoted,
                                         int phraseSlop)
        Creates a query from the analysis chain.

        Expert: this is more useful for subclasses such as queryparsers. If using this class directly, just use createBooleanQuery(String, String) and createPhraseQuery(String, String). This is a complex method and it is usually not necessary to override it in a subclass; instead, override methods like newBooleanQuery(), etc., if possible.

        Parameters:
        analyzer - analyzer used for this query
        operator - default boolean operator used for this query
        field - field to create queries against
        queryText - text to be passed to the analysis chain
        quoted - true if phrases should be generated when terms occur at more than one position
        phraseSlop - slop factor for phrase/multiphrase queries
      • createFieldQuery

        protected Query createFieldQuery(TokenStream source,
                                         BooleanClause.Occur operator,
                                         String field,
                                         boolean quoted,
                                         int phraseSlop)
        Creates a query from a token stream.
        Parameters:
        source - the token stream to create the query from
        operator - default boolean operator used for this query
        field - field to create queries against
        quoted - true if phrases should be generated when terms occur at more than one position
        phraseSlop - slop factor for phrase/multiphrase queries
      • newBooleanQuery

        protected BooleanQuery.Builder newBooleanQuery()
        Builds a new BooleanQuery instance.

        This is intended for subclasses that wish to customize the generated queries.

        Returns:
        new BooleanQuery instance
      • newSynonymQuery

        protected Query newSynonymQuery(Term[] terms)
        Builds a new SynonymQuery instance.

        This is intended for subclasses that wish to customize the generated queries.

        Returns:
        new Query instance
      • newTermQuery

        protected Query newTermQuery(Term term)
        Builds a new TermQuery instance.

        This is intended for subclasses that wish to customize the generated queries.

        Parameters:
        term - term
        Returns:
        new TermQuery instance
      • newMultiPhraseQueryBuilder

        protected MultiPhraseQuery.Builder newMultiPhraseQueryBuilder()
        Builds a new MultiPhraseQuery instance.

        This is intended for subclasses that wish to customize the generated queries.

        Returns:
        new MultiPhraseQuery instance