Class ExtendableQueryParser
- java.lang.Object
-
- org.apache.lucene.util.QueryBuilder
-
- org.apache.lucene.queryparser.classic.QueryParserBase
-
- org.apache.lucene.queryparser.classic.QueryParser
-
- org.apache.lucene.queryparser.ext.ExtendableQueryParser
-
- All Implemented Interfaces:
QueryParserConstants
,CommonQueryParserConfiguration
public class ExtendableQueryParser extends QueryParser
TheExtendableQueryParser
enables arbitrary query parser extension based on a customizable field naming scheme. The lucene query syntax allows implicit and explicit field definitions as query prefix followed by a colon (':') character. TheExtendableQueryParser
allows to encode extension keys into the field symbol associated with a registered instance ofParserExtension
. A customizable separation character separates the extension key from the actual field symbol. TheExtendableQueryParser
splits (@seeExtensions.splitExtensionField(String, String)
) the extension key from the field symbol and tries to resolve the associatedParserExtension
. If the parser can't resolve the key or the field token does not contain a separation character,ExtendableQueryParser
yields the same behavior as its super classQueryParser
. Otherwise, if the key is associated with aParserExtension
instance, the parser builds an instance ofExtensionQuery
to be processed byParserExtension.parse(ExtensionQuery)
.If a extension field does not contain a field part the default field for the query will be used.To guarantee that an extension field is processed with its associated extension, the extension query part must escape any special characters like '*' or '['. If the extension query contains any whitespace characters, the extension query part must be enclosed in quotes. Example ('_' used as separation character):
title_customExt:"Apache Lucene\?" OR content_customExt:prefix\*
Search on the default field:_customExt:"Apache Lucene\?" OR _customExt:prefix\*
The
ExtendableQueryParser
itself does not implement the logic how field and extension key are separated or ordered. All logic regarding the extension key and field symbol parsing is located inExtensions
. Customized extension schemes should be implemented by sub-classingExtensions
.For details about the default encoding scheme see
Extensions
.- See Also:
Extensions
,ParserExtension
,ExtensionQuery
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class org.apache.lucene.queryparser.classic.QueryParser
QueryParser.Operator
-
Nested classes/interfaces inherited from class org.apache.lucene.util.QueryBuilder
QueryBuilder.TermAndBoost
-
-
Field Summary
-
Fields inherited from class org.apache.lucene.queryparser.classic.QueryParser
DEFAULT_SPLIT_ON_WHITESPACE, jj_nt, token, token_source
-
Fields inherited from class org.apache.lucene.queryparser.classic.QueryParserBase
AND_OPERATOR, field, OR_OPERATOR
-
Fields inherited from class org.apache.lucene.util.QueryBuilder
analyzer, autoGenerateMultiTermSynonymsPhraseQuery, enableGraphQueries, enablePositionIncrements
-
Fields inherited from interface org.apache.lucene.queryparser.classic.QueryParserConstants
_ESCAPED_CHAR, _NUM_CHAR, _QUOTED_CHAR, _TERM_CHAR, _TERM_START_CHAR, _WHITESPACE, AND, BAREOPER, Boost, CARAT, COLON, DEFAULT, EOF, FUZZY_SLOP, LPAREN, MINUS, NOT, NUMBER, OR, PLUS, PREFIXTERM, QUOTED, Range, RANGE_GOOP, RANGE_QUOTED, RANGE_TO, RANGEEX_END, RANGEEX_START, RANGEIN_END, RANGEIN_START, REGEXPTERM, RPAREN, STAR, TERM, tokenImage, WILDTERM
-
-
Constructor Summary
Constructors Constructor Description ExtendableQueryParser(String f, Analyzer a)
Creates a newExtendableQueryParser
instanceExtendableQueryParser(String f, Analyzer a, Extensions ext)
Creates a newExtendableQueryParser
instance
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description char
getExtensionFieldDelimiter()
Returns the extension field delimiter character.protected Query
getFieldQuery(String field, String queryText, boolean quoted)
-
Methods inherited from class org.apache.lucene.queryparser.classic.QueryParser
Clause, Conjunction, disable_tracing, enable_tracing, generateParseException, getNextToken, getSplitOnWhitespace, getToken, Modifiers, MultiTerm, Query, ReInit, ReInit, setAutoGeneratePhraseQueries, setSplitOnWhitespace, Term, TopLevelQuery, trace_enabled
-
Methods inherited from class org.apache.lucene.queryparser.classic.QueryParserBase
addClause, addMultiTermClauses, escape, getAllowLeadingWildcard, getAutoGeneratePhraseQueries, getBooleanQuery, getDateResolution, getDefaultOperator, getDeterminizeWorkLimit, getField, getFieldQuery, getFuzzyDistance, getFuzzyMinSim, getFuzzyPrefixLength, getFuzzyQuery, getLocale, getMultiTermRewriteMethod, getPhraseSlop, getPrefixQuery, getRangeQuery, getRegexpQuery, getTimeZone, getWildcardQuery, init, newBooleanClause, newFieldQuery, newFuzzyQuery, newMatchAllDocsQuery, newPrefixQuery, newRangeQuery, newRegexpQuery, newWildcardQuery, parse, setAllowLeadingWildcard, setDateResolution, setDateResolution, setDefaultOperator, setDeterminizeWorkLimit, setFuzzyMinSim, setFuzzyPrefixLength, setLocale, setMultiTermRewriteMethod, setPhraseSlop, setTimeZone
-
Methods inherited from class org.apache.lucene.util.QueryBuilder
add, analyzeBoolean, analyzeGraphBoolean, analyzeGraphPhrase, analyzeMultiBoolean, analyzeMultiPhrase, analyzePhrase, analyzeTerm, createBooleanQuery, createBooleanQuery, createFieldQuery, createFieldQuery, createMinShouldMatchQuery, createPhraseQuery, createPhraseQuery, getAnalyzer, getAutoGenerateMultiTermSynonymsPhraseQuery, getEnableGraphQueries, getEnablePositionIncrements, newBooleanQuery, newGraphSynonymQuery, newMultiPhraseQueryBuilder, newSynonymQuery, newTermQuery, setAnalyzer, setAutoGenerateMultiTermSynonymsPhraseQuery, setEnableGraphQueries, setEnablePositionIncrements
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.apache.lucene.queryparser.flexible.standard.CommonQueryParserConfiguration
getAnalyzer, getEnablePositionIncrements, setEnablePositionIncrements
-
-
-
-
Constructor Detail
-
ExtendableQueryParser
public ExtendableQueryParser(String f, Analyzer a)
Creates a newExtendableQueryParser
instance- Parameters:
f
- the default query fielda
- the analyzer used to find terms in a query string
-
ExtendableQueryParser
public ExtendableQueryParser(String f, Analyzer a, Extensions ext)
Creates a newExtendableQueryParser
instance- Parameters:
f
- the default query fielda
- the analyzer used to find terms in a query stringext
- the query parser extensions
-
-
Method Detail
-
getExtensionFieldDelimiter
public char getExtensionFieldDelimiter()
Returns the extension field delimiter character.- Returns:
- the extension field delimiter character.
-
getFieldQuery
protected Query getFieldQuery(String field, String queryText, boolean quoted) throws ParseException
- Overrides:
getFieldQuery
in classQueryParserBase
- Throws:
ParseException
- throw in overridden method to disallow
-
-