public class QueryBuilder extends Object
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.
Modifier and Type | Class and Description |
---|---|
static class |
QueryBuilder.TermAndBoost
Wraps a term and boost
|
Modifier and Type | Field and Description |
---|---|
protected Analyzer |
analyzer |
protected boolean |
autoGenerateMultiTermSynonymsPhraseQuery |
protected boolean |
enableGraphQueries |
protected boolean |
enablePositionIncrements |
Constructor and Description |
---|
QueryBuilder(Analyzer analyzer)
Creates a new QueryBuilder using the given analyzer.
|
Modifier and Type | Method and Description |
---|---|
protected void |
add(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.
|
protected SpanQuery |
createSpanQuery(TokenStream in,
String field)
Creates a span query from the tokenstream.
|
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(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. |
protected Analyzer analyzer
protected boolean enablePositionIncrements
protected boolean enableGraphQueries
protected boolean autoGenerateMultiTermSynonymsPhraseQuery
public QueryBuilder(Analyzer analyzer)
public Query createBooleanQuery(String field, String queryText)
This is equivalent to createBooleanQuery(field, queryText, Occur.SHOULD)
field
- field namequeryText
- text to be passed to the analyzerTermQuery
or BooleanQuery
, based on the analysis
of queryText
public Query createBooleanQuery(String field, String queryText, BooleanClause.Occur operator)
field
- field namequeryText
- text to be passed to the analyzeroperator
- operator used for clauses between analyzer tokens.TermQuery
or BooleanQuery
, based on the analysis
of queryText
public Query createPhraseQuery(String field, String queryText)
This is equivalent to createPhraseQuery(field, queryText, 0)
field
- field namequeryText
- text to be passed to the analyzerTermQuery
, BooleanQuery
, PhraseQuery
, or
MultiPhraseQuery
, based on the analysis of queryText
public Query createPhraseQuery(String field, String queryText, int phraseSlop)
field
- field namequeryText
- text to be passed to the analyzerphraseSlop
- number of other words permitted between words in query phraseTermQuery
, BooleanQuery
, PhraseQuery
, or
MultiPhraseQuery
, based on the analysis of queryText
public Query createMinShouldMatchQuery(String field, String queryText, float fraction)
field
- field namequeryText
- text to be passed to the analyzerfraction
- of query terms [0..1]
that should matchTermQuery
or BooleanQuery
, based on the analysis
of queryText
public Analyzer getAnalyzer()
setAnalyzer(Analyzer)
public void setAnalyzer(Analyzer analyzer)
public boolean getEnablePositionIncrements()
setEnablePositionIncrements(boolean)
public void setEnablePositionIncrements(boolean enable)
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.
public boolean getAutoGenerateMultiTermSynonymsPhraseQuery()
public void setAutoGenerateMultiTermSynonymsPhraseQuery(boolean enable)
true
if phrase queries should be automatically generated
for multi terms synonyms.
Default: false.protected Query createFieldQuery(Analyzer analyzer, BooleanClause.Occur operator, String field, String queryText, boolean quoted, int phraseSlop)
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.
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 queriespublic void setEnableGraphQueries(boolean v)
public boolean getEnableGraphQueries()
protected Query createFieldQuery(TokenStream source, BooleanClause.Occur operator, String field, boolean quoted, int phraseSlop)
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 queriesprotected SpanQuery createSpanQuery(TokenStream in, String field) throws IOException
SpanTermQuery
is
returned. When multiple tokens, an ordered SpanNearQuery
with slop 0 is returned.IOException
protected Query analyzeTerm(String field, TokenStream stream) throws IOException
IOException
protected Query analyzeBoolean(String field, TokenStream stream) throws IOException
IOException
protected void add(BooleanQuery.Builder q, List<QueryBuilder.TermAndBoost> current, BooleanClause.Occur operator)
protected Query analyzeMultiBoolean(String field, TokenStream stream, BooleanClause.Occur operator) throws IOException
IOException
protected Query analyzePhrase(String field, TokenStream stream, int slop) throws IOException
IOException
protected Query analyzeMultiPhrase(String field, TokenStream stream, int slop) throws IOException
IOException
protected Query analyzeGraphBoolean(String field, TokenStream source, BooleanClause.Occur operator) throws IOException
IOException
protected Query analyzeGraphPhrase(TokenStream source, String field, int phraseSlop) throws IOException
IOException
protected BooleanQuery.Builder newBooleanQuery()
This is intended for subclasses that wish to customize the generated queries.
protected Query newSynonymQuery(QueryBuilder.TermAndBoost[] terms)
This is intended for subclasses that wish to customize the generated queries.
protected Query newGraphSynonymQuery(Iterator<Query> queries)
This is intended for subclasses that wish to customize the generated queries.
protected Query newTermQuery(Term term, float boost)
This is intended for subclasses that wish to customize the generated queries.
term
- termprotected MultiPhraseQuery.Builder newMultiPhraseQueryBuilder()
This is intended for subclasses that wish to customize the generated queries.
Copyright © 2000-2021 Apache Software Foundation. All Rights Reserved.