Package org.apache.lucene.util

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

## Nested Class Summary

Nested Classes
Modifier and Type
Class
Description
`static final record`
`QueryBuilder.TermAndBoost`
Wraps a term and boost

## Field Summary

Fields
Modifier and Type
Field
Description
`protected Analyzer`
`analyzer`
`protected boolean`
`autoGenerateMultiTermSynonymsPhraseQuery`
`protected boolean`
`enableGraphQueries`
`protected boolean`
`enablePositionIncrements`

## Constructor Summary

Constructors
Constructor
Description
`QueryBuilder(Analyzer analyzer)`
Creates a new QueryBuilder using the given analyzer.

## Method Summary

Modifier and Type
Method
Description
`protected void`
`add(String field, BooleanQuery.Builder q, List<QueryBuilder.TermAndBoost> current, BooleanClause.Occur operator)`
`protected Query`
`analyzeBoolean(String field, TokenStream stream)`
Creates simple boolean query from the cached tokenstream contents
`protected Query`
`analyzeGraphBoolean(String field, TokenStream source, BooleanClause.Occur operator)`
Creates a boolean query from a graph token stream.
`protected Query`
`analyzeGraphPhrase(TokenStream source, String field, int phraseSlop)`
Creates graph phrase query from the tokenstream contents
`protected Query`
`analyzeMultiBoolean(String field, TokenStream stream, BooleanClause.Occur operator)`
Creates complex boolean query from the cached tokenstream contents
`protected Query`
`analyzeMultiPhrase(String field, TokenStream stream, int slop)`
Creates complex phrase query from the cached tokenstream contents
`protected Query`
`analyzePhrase(String field, TokenStream stream, int slop)`
Creates simple phrase query from the cached tokenstream contents
`protected Query`
`analyzeTerm(String field, TokenStream stream)`
Creates simple term query from the cached tokenstream contents
`Query`
`createBooleanQuery(String field, String queryText)`
Creates a boolean query from the query text.
`Query`
`createBooleanQuery(String field, String queryText, BooleanClause.Occur operator)`
Creates a boolean query from the query text.
`protected Query`
`createFieldQuery(Analyzer analyzer, BooleanClause.Occur operator, String field, String queryText, boolean quoted, int phraseSlop)`
Creates a query from the analysis chain.
`protected Query`
`createFieldQuery(TokenStream source, BooleanClause.Occur operator, String field, boolean quoted, int phraseSlop)`
Creates a query from a token stream.
`Query`
`createMinShouldMatchQuery(String field, String queryText, float fraction)`
Creates a minimum-should-match query from the query text.
`Query`
`createPhraseQuery(String field, String queryText)`
Creates a phrase query from the query text.
`Query`
`createPhraseQuery(String field, String queryText, int phraseSlop)`
Creates a phrase query from the query text.
`Analyzer`
`getAnalyzer()`
Returns the analyzer.
`boolean`
`getAutoGenerateMultiTermSynonymsPhraseQuery()`
Returns true if phrase query should be automatically generated for multi terms synonyms.
`boolean`
`getEnableGraphQueries()`
Returns true if graph TokenStream processing is enabled (default).
`boolean`
`getEnablePositionIncrements()`
Returns true if position increments are enabled.
`protected BooleanQuery.Builder`
`newBooleanQuery()`
Builds a new BooleanQuery instance.
`protected Query`
`newGraphSynonymQuery(Iterator<Query> queries)`
Builds a new GraphQuery for multi-terms synonyms.
`protected MultiPhraseQuery.Builder`
`newMultiPhraseQueryBuilder()`
Builds a new MultiPhraseQuery instance.
`protected Query`
`newSynonymQuery(String field, QueryBuilder.TermAndBoost[] terms)`
Builds a new SynonymQuery instance.
`protected Query`
`newTermQuery(Term term, float boost)`
Builds a new TermQuery instance.
`void`
`setAnalyzer(Analyzer analyzer)`
Sets the analyzer used to tokenize text.
`void`
`setAutoGenerateMultiTermSynonymsPhraseQuery(boolean enable)`
Set to `true` if phrase queries should be automatically generated for multi terms synonyms.
`void`
`setEnableGraphQueries(boolean v)`
Enable or disable graph TokenStream processing (enabled by default).
`void`
`setEnablePositionIncrements(boolean enable)`
Set to `true` to enable position increments in result query.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Field Details

### analyzer

protected Analyzer analyzer

### enablePositionIncrements

protected boolean enablePositionIncrements

### enableGraphQueries

protected boolean enableGraphQueries

### autoGenerateMultiTermSynonymsPhraseQuery

protected boolean autoGenerateMultiTermSynonymsPhraseQuery

## 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(Analyzer)`

### 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(boolean)`

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

### getAutoGenerateMultiTermSynonymsPhraseQuery

public boolean getAutoGenerateMultiTermSynonymsPhraseQuery()
Returns true if phrase query should be automatically generated for multi terms synonyms.

See Also:
  - `setAutoGenerateMultiTermSynonymsPhraseQuery(boolean)`

### setAutoGenerateMultiTermSynonymsPhraseQuery

public void setAutoGenerateMultiTermSynonymsPhraseQuery(boolean enable)
Set to `true` if phrase queries should be automatically generated for multi terms synonyms. Default: false.

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

### setEnableGraphQueries

public void setEnableGraphQueries(boolean v)
Enable or disable graph TokenStream processing (enabled by default).

WARNING: This API is experimental and might change in incompatible ways in the next release.

### getEnableGraphQueries

public boolean getEnableGraphQueries()
Returns true if graph TokenStream processing is enabled (default).

WARNING: This API is experimental and might change in incompatible ways in the next release.

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

### analyzeTerm

protected Query analyzeTerm(String field, TokenStream stream) throws IOException
Creates simple term query from the cached tokenstream contents

Throws:
  `IOException`

### analyzeBoolean

protected Query analyzeBoolean(String field, TokenStream stream) throws IOException
Creates simple boolean query from the cached tokenstream contents

Throws:
  `IOException`

### add

protected void add(String field, BooleanQuery.Builder q, List<QueryBuilder.TermAndBoost> current, BooleanClause.Occur operator)

### analyzeMultiBoolean

protected Query analyzeMultiBoolean(String field, TokenStream stream, BooleanClause.Occur operator) throws IOException
Creates complex boolean query from the cached tokenstream contents

Throws:
  `IOException`

### analyzePhrase

protected Query analyzePhrase(String field, TokenStream stream, int slop) throws IOException
Creates simple phrase query from the cached tokenstream contents

Throws:
  `IOException`

### analyzeMultiPhrase

protected Query analyzeMultiPhrase(String field, TokenStream stream, int slop) throws IOException
Creates complex phrase query from the cached tokenstream contents

Throws:
  `IOException`

### analyzeGraphBoolean

protected Query analyzeGraphBoolean(String field, TokenStream source, BooleanClause.Occur operator) throws IOException
Creates a boolean query from a graph token stream. The articulation points of the graph are visited in order and the queries created at each point are merged in the returned boolean query.

Throws:
  `IOException`

### analyzeGraphPhrase

protected Query analyzeGraphPhrase(TokenStream source, String field, int phraseSlop) throws IOException
Creates graph phrase query from the tokenstream contents

Throws:
  `IOException`

### 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(String field, QueryBuilder.TermAndBoost[] terms)
Builds a new SynonymQuery instance.

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

Returns:
  new Query instance

### newGraphSynonymQuery

protected Query newGraphSynonymQuery(Iterator<Query> queries)
Builds a new GraphQuery for multi-terms synonyms.

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

Returns:
  new Query instance

### newTermQuery

protected Query newTermQuery(Term term, float boost)
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