Class QueryBuilder
- java.lang.Object
-
- org.apache.lucene.util.QueryBuilder
-
public class QueryBuilder extends Object
Creates queries from theAnalyzer
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 class
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
All Methods Instance Methods Concrete Methods 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 contentsprotected 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 contentsprotected Query
analyzeMultiBoolean(String field, TokenStream stream, BooleanClause.Occur operator)
Creates complex boolean query from the cached tokenstream contentsprotected Query
analyzeMultiPhrase(String field, TokenStream stream, int slop)
Creates complex phrase query from the cached tokenstream contentsprotected Query
analyzePhrase(String field, TokenStream stream, int slop)
Creates simple phrase query from the cached tokenstream contentsprotected Query
analyzeTerm(String field, TokenStream stream)
Creates simple term query from the cached tokenstream contentsQuery
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 totrue
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 totrue
to enable position increments in result query.
-
-
-
Field Detail
-
analyzer
protected Analyzer analyzer
-
enablePositionIncrements
protected boolean enablePositionIncrements
-
enableGraphQueries
protected boolean enableGraphQueries
-
autoGenerateMultiTermSynonymsPhraseQuery
protected boolean autoGenerateMultiTermSynonymsPhraseQuery
-
-
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 namequeryText
- text to be passed to the analyzer- Returns:
TermQuery
orBooleanQuery
, based on the analysis ofqueryText
-
createBooleanQuery
public Query createBooleanQuery(String field, String queryText, BooleanClause.Occur operator)
Creates a boolean query from the query text.- Parameters:
field
- field namequeryText
- text to be passed to the analyzeroperator
- operator used for clauses between analyzer tokens.- Returns:
TermQuery
orBooleanQuery
, based on the analysis ofqueryText
-
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 namequeryText
- text to be passed to the analyzer- Returns:
TermQuery
,BooleanQuery
,PhraseQuery
, orMultiPhraseQuery
, based on the analysis ofqueryText
-
createPhraseQuery
public Query createPhraseQuery(String field, String queryText, int phraseSlop)
Creates a phrase query from the query text.- Parameters:
field
- field namequeryText
- text to be passed to the analyzerphraseSlop
- number of other words permitted between words in query phrase- Returns:
TermQuery
,BooleanQuery
,PhraseQuery
, orMultiPhraseQuery
, based on the analysis ofqueryText
-
createMinShouldMatchQuery
public Query createMinShouldMatchQuery(String field, String queryText, float fraction)
Creates a minimum-should-match query from the query text.- Parameters:
field
- field namequeryText
- text to be passed to the analyzerfraction
- of query terms[0..1]
that should match- Returns:
TermQuery
orBooleanQuery
, based on the analysis ofqueryText
-
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 totrue
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.
-
setAutoGenerateMultiTermSynonymsPhraseQuery
public void setAutoGenerateMultiTermSynonymsPhraseQuery(boolean enable)
Set totrue
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)
andcreatePhraseQuery(String, String)
. This is a complex method and it is usually not necessary to override it in a subclass; instead, override methods likenewBooleanQuery()
, etc., if possible.- Parameters:
analyzer
- analyzer used for this queryoperator
- default boolean operator used for this queryfield
- field to create queries againstqueryText
- text to be passed to the analysis chainquoted
- true if phrases should be generated when terms occur at more than one positionphraseSlop
- 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 fromoperator
- default boolean operator used for this queryfield
- field to create queries againstquoted
- true if phrases should be generated when terms occur at more than one positionphraseSlop
- 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
-
-