ExtendableQueryParser (Lucene 10.5.0 queryparser API)
Description: declaration: package: org.apache.lucene.queryparser.ext, class: ExtendableQueryParser

Package org.apache.lucene.queryparser.ext

# 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
The `ExtendableQueryParser` 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. The `ExtendableQueryParser` allows to encode extension keys into the field symbol associated with a registered instance of `ParserExtension`. A customizable separation character separates the extension key from the actual field symbol. The `ExtendableQueryParser` splits (@see `Extensions.splitExtensionField(String, String)`) the extension key from the field symbol and tries to resolve the associated `ParserExtension`. 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 class `QueryParser`. Otherwise, if the key is associated with a `ParserExtension` instance, the parser builds an instance of `ExtensionQuery` to be processed by `ParserExtension.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 in `Extensions`. Customized extension schemes should be implemented by sub-classing `Extensions`.

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 new `ExtendableQueryParser` instance
  `ExtendableQueryParser(String f, Analyzer a, Extensions ext)`
  Creates a new `ExtendableQueryParser` instance

- ## Method Summary

  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 Details

  - ### ExtendableQueryParser

    public ExtendableQueryParser(String f, Analyzer a)
    Creates a new `ExtendableQueryParser` instance
    Parameters:
      `f` - the default query field
      `a` - the analyzer used to find terms in a query string

  - ### ExtendableQueryParser

    public ExtendableQueryParser(String f, Analyzer a, Extensions ext)
    Creates a new `ExtendableQueryParser` instance
    Parameters:
      `f` - the default query field
      `a` - the analyzer used to find terms in a query string
      `ext` - the query parser extensions

- ## Method Details

  - ### 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 class `QueryParserBase`
    Throws:
      `ParseException` - throw in overridden method to disallow