Class FunctionQParser

java.lang.Object
org.apache.solr.search.QParser
org.apache.solr.search.FunctionQParser

public class FunctionQParser extends QParser
Does "function query" parsing of function-call like strings, producing a ValueSource. As this implements QParser, we produce a Query, but more often parseAsValueSource() is called instead.
See Also:
  • Field Details

    • FLAG_CONSUME_DELIMITER

      public static final int FLAG_CONSUME_DELIMITER
      See Also:
    • FLAG_IS_AGG

      public static final int FLAG_IS_AGG
      See Also:
    • FLAG_USE_FIELDNAME_SOURCE

      public static final int FLAG_USE_FIELDNAME_SOURCE
      See Also:
    • FLAG_PARSE_VECTOR_BYTE_ENCODING

      public static final int FLAG_PARSE_VECTOR_BYTE_ENCODING
      See Also:
    • FLAG_DEFAULT

      public static final int FLAG_DEFAULT
      See Also:
    • sp

      public StrParser sp
      NOTE: This API is for internal purposes only and might change in incompatible ways in the next release.
  • Constructor Details

    • FunctionQParser

      public FunctionQParser(String qstr, org.apache.solr.common.params.SolrParams localParams, org.apache.solr.common.params.SolrParams params, SolrQueryRequest req)
  • Method Details

    • parseAsValueSource

      public static org.apache.lucene.queries.function.ValueSource parseAsValueSource(String string, SolrQueryRequest request) throws SyntaxError
      Parses the string to a ValueSource. Typically, this is not used, however.
      Throws:
      SyntaxError
      See Also:
    • setString

      public void setString(String s)
      Overrides:
      setString in class QParser
    • setParseMultipleSources

      @Deprecated public void setParseMultipleSources(boolean parseMultipleSources)
      Deprecated.
    • getParseMultipleSources

      @Deprecated public boolean getParseMultipleSources()
      Deprecated.
      this is only needed for an unusual use-case and seems hard to support
      Parse multiple comma separated value sources encapsulated into a VectorValueSource when QParser.getQuery() or parseAsValueSource() is called.
    • setParseToEnd

      public void setParseToEnd(boolean parseToEnd)
    • getParseToEnd

      public boolean getParseToEnd()
      throw exception if there is extra stuff at the end of the parsed valuesource(s).
    • parse

      public org.apache.lucene.search.Query parse() throws SyntaxError
      Description copied from class: QParser
      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.
      Specified by:
      parse in class QParser
      Throws:
      SyntaxError
      See Also:
    • parseAsValueSource

      public org.apache.lucene.queries.function.ValueSource parseAsValueSource() throws SyntaxError
      Parses as a ValueSource, not a Query. NOT intended to be called by ValueSourceParser.parse(FunctionQParser); it's intended for general code that has a QParser but actually wants to parse a ValueSource.
      Overrides:
      parseAsValueSource in class QParser
      Returns:
      A VectorValueSource for multiple VS, otherwise just the single VS.
      Throws:
      SyntaxError
    • hasMoreArguments

      public boolean hasMoreArguments() throws SyntaxError
      Are there more arguments in the argument list being parsed?
      Returns:
      whether more args exist
      Throws:
      SyntaxError
    • parseId

      public String parseId() throws SyntaxError
      Throws:
      SyntaxError
    • parseFloat

      public Float parseFloat() throws SyntaxError
      Parse a float.
      Returns:
      Float
      Throws:
      SyntaxError
    • parseDouble

      public double parseDouble() throws SyntaxError
      Parse a Double
      Returns:
      double
      Throws:
      SyntaxError
    • parseInt

      public int parseInt() throws SyntaxError
      Parse an integer
      Returns:
      An int
      Throws:
      SyntaxError
    • argWasQuoted

      public boolean argWasQuoted()
    • parseArg

      public String parseArg() throws SyntaxError
      Throws:
      SyntaxError
    • parseVector

      public List<Number> parseVector(org.apache.lucene.index.VectorEncoding encoding) throws SyntaxError
      Throws:
      SyntaxError
    • parseValueSourceList

      public List<org.apache.lucene.queries.function.ValueSource> parseValueSourceList() throws SyntaxError
      Parse a list of ValueSource. Must be the final set of arguments to a ValueSource.
      Returns:
      List<ValueSource>
      Throws:
      SyntaxError
    • parseValueSourceList

      public List<org.apache.lucene.queries.function.ValueSource> parseValueSourceList(int flags) throws SyntaxError
      Parse a list of ValueSource. Must be the final set of arguments to a ValueSource.
      Parameters:
      flags - - customize parsing behavior
      Returns:
      List<ValueSource>
      Throws:
      SyntaxError
    • parseValueSource

      public org.apache.lucene.queries.function.ValueSource parseValueSource() throws SyntaxError
      Parse an individual ValueSource.
      Throws:
      SyntaxError
    • parseNestedQuery

      public org.apache.lucene.search.Query parseNestedQuery() throws SyntaxError
      Throws:
      SyntaxError
    • parseValueSource

      protected org.apache.lucene.queries.function.ValueSource parseValueSource(boolean doConsumeDelimiter) throws SyntaxError
      Parse an individual value source.
      Parameters:
      doConsumeDelimiter - whether to consume a delimiter following the ValueSource
      Throws:
      SyntaxError
    • parseValueSource

      protected org.apache.lucene.queries.function.ValueSource parseValueSource(int flags) throws SyntaxError
      Throws:
      SyntaxError
    • parseConstVector

      public org.apache.lucene.queries.function.ValueSource parseConstVector(int flags) throws SyntaxError
      Throws:
      SyntaxError
    • parseAgg

      public AggValueSource parseAgg(int flags) throws SyntaxError
      Throws:
      SyntaxError
      WARNING: This API is experimental and might change in incompatible ways in the next release.
    • consumeArgumentDelimiter

      protected boolean consumeArgumentDelimiter() throws SyntaxError
      Consume an argument delimiter (a comma) from the token stream. Only consumes if more arguments should exist (no ending parens or end of string).
      Returns:
      whether a delimiter was consumed
      Throws:
      SyntaxError