Class QueryBuilder


  • 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 final 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)

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

        protected BooleanQuery newBooleanQuery​(boolean disableCoord)
        Builds a new BooleanQuery instance.

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

        Parameters:
        disableCoord - disable coord
        Returns:
        new BooleanQuery 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
      • newPhraseQuery

        protected PhraseQuery newPhraseQuery()
        Builds a new PhraseQuery instance.

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

        Returns:
        new PhraseQuery instance
      • newMultiPhraseQuery

        protected MultiPhraseQuery newMultiPhraseQuery()
        Builds a new MultiPhraseQuery instance.

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

        Returns:
        new MultiPhraseQuery instance