Class QParser

java.lang.Object
org.apache.solr.search.QParser
Direct Known Subclasses:
AbstractVectorQParserBase, CrossCollectionJoinQParser, DisMaxQParser, ExportQParserPlugin.ExportQParser, ExtendedDismaxQParser, FiltersQParser, FunctionQParser, GraphQueryParser, HashRangeQParser, LuceneQParser, MinHashQParser, RankQParserPlugin.RankQParser, SimpleMLTQParser, SpatialFilterQParser

public abstract class QParser extends Object
Note: This API is experimental and may change in non backward-compatible ways in the future
  • Field Details

    • FLAG_FILTER

      public static final int FLAG_FILTER
      See Also:
      WARNING: This API is experimental and might change in incompatible ways in the next release.
    • qstr

      protected String qstr
    • params

      protected org.apache.solr.common.params.SolrParams params
    • localParams

      protected org.apache.solr.common.params.SolrParams localParams
    • req

      protected SolrQueryRequest req
    • recurseCount

      protected int recurseCount
    • flags

      protected int flags
      WARNING: This API is experimental and might change in incompatible ways in the next release.
    • query

      protected org.apache.lucene.search.Query query
    • stringIncludingLocalParams

      protected String stringIncludingLocalParams
    • valFollowedParams

      protected boolean valFollowedParams
    • localParamsEnd

      protected int localParamsEnd
  • Constructor Details

    • QParser

      public QParser(String qstr, org.apache.solr.common.params.SolrParams localParams, org.apache.solr.common.params.SolrParams params, SolrQueryRequest req)
      Constructor for the QParser
      Parameters:
      qstr - The query string to be parsed
      localParams - Params scoped to this query, customizing the parsing. Null if none. Most params the parser needs are resolved here first, overlaying the request. See https://solr.apache.org/guide/solr/latest/query-guide/local-params.html
      params - Params for the request, taken from SolrQueryRequest.getParams(); not null
      req - The original SolrQueryRequest.
  • Method Details

    • setFlags

      public void setFlags(int flags)
      WARNING: This API is experimental and might change in incompatible ways in the next release.
    • getFlags

      public int getFlags()
      WARNING: This API is experimental and might change in incompatible ways in the next release.
    • isFilter

      public boolean isFilter()
      WARNING: This API is experimental and might change in incompatible ways in the next release.
      Query is in the context of a filter, where scores don't matter
    • setIsFilter

      public void setIsFilter(boolean isFilter)
      WARNING: This API is experimental and might change in incompatible ways in the next release.
    • parse

      public abstract org.apache.lucene.search.Query parse() throws SyntaxError
      Create and return the Query object represented by qstr. Null MAY be returned to signify there was no input (e.g. no query string) to parse.
      Throws:
      SyntaxError
      See Also:
    • getLocalParams

      public org.apache.solr.common.params.SolrParams getLocalParams()
    • setLocalParams

      public void setLocalParams(org.apache.solr.common.params.SolrParams localParams)
    • getParams

      public org.apache.solr.common.params.SolrParams getParams()
    • setParams

      public void setParams(org.apache.solr.common.params.SolrParams params)
    • getReq

      public SolrQueryRequest getReq()
    • setReq

      public void setReq(SolrQueryRequest req)
    • getString

      public String getString()
    • setString

      public void setString(String s)
    • getQuery

      public org.apache.lucene.search.Query getQuery() throws SyntaxError
      Returns the resulting query from this QParser, calling parse() only the first time and caching the Query result. A null return is possible!
      Throws:
      SyntaxError
    • getParam

      public String getParam(String name)
      check both local and global params
    • subQuery

      public QParser subQuery(String q, String defaultType) throws SyntaxError
      Create a new QParser for parsing an embedded sub-query
      Throws:
      SyntaxError
    • getSortSpec

      public SortSpec getSortSpec(boolean useGlobalParams) throws SyntaxError
      Parameters:
      useGlobalParams - look up sort, start, rows in global params if not in local params
      Returns:
      the sort specification
      Throws:
      SyntaxError
    • getDefaultHighlightFields

      public String[] getDefaultHighlightFields()
    • getHighlightQuery

      public org.apache.lucene.search.Query getHighlightQuery() throws SyntaxError
      Throws:
      SyntaxError
    • addDebugInfo

      public void addDebugInfo(org.apache.solr.common.util.NamedList<Object> debugInfo)
    • getPrefixQueryMinPrefixLength

      public int getPrefixQueryMinPrefixLength()
    • parseAsValueSource

      public org.apache.lucene.queries.function.ValueSource parseAsValueSource() throws SyntaxError
      Parse the string into a ValueSource instead of a Query. Solr calls this in most places that "function queries" go. Overridden by FunctionQParser.
      Throws:
      SyntaxError
    • getParser

      public static QParser getParser(String qstr, SolrQueryRequest req) throws SyntaxError
      Create a QParser to parse qstr, using the "lucene" (QParserPlugin.DEFAULT_QTYPE) query parser. The query parser may be overridden by local-params in the query string itself. For example if qstr={!prefix f=myfield}foo then the prefix query parser will be used.
      Throws:
      SyntaxError
    • getParser

      public static QParser getParser(String qstr, String defaultParser, SolrQueryRequest req) throws SyntaxError
      Create a QParser to parse qstr using the defaultParser. Note that local-params is only parsed when the defaultParser is "lucene" or "func".
      Throws:
      SyntaxError
    • getParser

      public static QParser getParser(String qstr, String parserName, boolean allowLocalParams, SolrQueryRequest req) throws SyntaxError
      Expert: Create a QParser to parse qstr using the parserName parser, while allowing a toggle for whether local-params may be parsed. The query parser may be overridden by local parameters in the query string itself (assuming allowLocalParams. For example if parserName=dismax and qstr=foo, then the dismax query parser will be used to parse and construct the query object. However if qstr= {!prefix f=myfield}foo then the prefix query parser will be used.
      Parameters:
      allowLocalParams - Whether this query parser should parse local-params syntax. Note that the "lucene" query parser natively parses local-params regardless.
      Throws:
      SyntaxError
      NOTE: This API is for internal purposes only and might change in incompatible ways in the next release.