Class QueryBuilder

java.lang.Object
org.apache.lucene.util.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 Details

    • QueryBuilder

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

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

      public Analyzer getAnalyzer()
      Returns the analyzer.
      See Also:
    • setAnalyzer

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

      public boolean getEnablePositionIncrements()
      Returns true if position increments are enabled.
      See Also:
    • 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