@ExperimentalAppSearchApi
class SearchNode : FunctionNode


FunctionNode that represents the search function.

The search function is a convenience function that takes a query string and parses it according to the supported query language, and can optionally take a list of property paths to serve as property restricts. This means that the query `search("foo bar", createList("subject", body")` is equivalent to the query `(subject:foo OR body:foo) (subject:bar OR body:bar)`.

Summary

Public constructors

SearchNode(childNode: Node)

Create a SearchNode representing the query function `search(queryString)`.

SearchNode(childNode: Node, properties: (Mutable)List<PropertyPath!>)

Create a SearchNode representing the query function `search(queryString, createList(listOfProperties)`.

Public functions

Unit
addProperty(propertyPath: PropertyPath)

Add a restrict to the end of the current list of restricts mProperties.

Boolean
equals(o: Any!)
Node

Returns the child query searched for in the function.

(Mutable)List<Node!>

Returns the child Node of SearchNode as a list containing the only child Node.

String

Returns the name of the function represented by SearchNode.

(Mutable)List<PropertyPath!>

Returns the list of property restricts applied to the query.

Int
Unit
setChild(childNode: Node)

Sets the query searched for in the function.

Unit

Sets what property restricts will be applied to the query.

String

Get the query string representation of SearchNode.

Inherited Constants

From androidx.appsearch.ast.FunctionNode
const String!
FUNCTION_NAME_GET_SEARCH_STRING_PARAMETER = "getSearchStringParameter"

Name of the query function represented by androidx.appsearch.ast.query.GetSearchStringParameterNode.

const String!

Name of the query function represented by androidx.appsearch.ast.query.HasPropertyNode.

const String!
FUNCTION_NAME_PROPERTY_DEFINED = "propertyDefined"

Name of the query function represented by androidx.appsearch.ast.query.PropertyDefinedNode.

const String!

Name of the query function represented by androidx.appsearch.ast.query.SearchNode.

const String!

Name of the query function represented by androidx.appsearch.ast.query.SemanticSearchNode.

Public constructors

SearchNode

Added in 1.1.0-alpha07
SearchNode(childNode: Node)

Create a SearchNode representing the query function `search(queryString)`.

By default, the query function search will have an empty list of restricts. The search function will return all results from the query.

Parameters
childNode: Node

The query to search for represented as a Node.

SearchNode

Added in 1.1.0-alpha07
SearchNode(childNode: Node, properties: (Mutable)List<PropertyPath!>)

Create a SearchNode representing the query function `search(queryString, createList(listOfProperties)`.

Parameters
childNode: Node

The query to search for represented as a Node.

properties: (Mutable)List<PropertyPath!>

A list of property paths to restrict results from the query. If the list is empty, all results from the query will be returned.

Public functions

addProperty

Added in 1.1.0-alpha07
fun addProperty(propertyPath: PropertyPath): Unit

Add a restrict to the end of the current list of restricts mProperties.

equals

fun equals(o: Any!): Boolean

getChild

Added in 1.1.0-alpha07
fun getChild(): Node

Returns the child query searched for in the function.

getChildren

fun getChildren(): (Mutable)List<Node!>

Returns the child Node of SearchNode as a list containing the only child Node.

getFunctionName

Added in 1.1.0-alpha07
fun getFunctionName(): String

Returns the name of the function represented by SearchNode.

getProperties

Added in 1.1.0-alpha07
fun getProperties(): (Mutable)List<PropertyPath!>

Returns the list of property restricts applied to the query. If the list is empty, there are no property restricts, which means that `search` will return all results from the query.

hashCode

fun hashCode(): Int

setChild

Added in 1.1.0-alpha07
fun setChild(childNode: Node): Unit

Sets the query searched for in the function.

setProperties

Added in 1.1.0-alpha07
fun setProperties(properties: (Mutable)List<PropertyPath!>): Unit

Sets what property restricts will be applied to the query.

toString

fun toString(): String

Get the query string representation of SearchNode.

If there are no property restricts, then the string representation is the function name followed by the string representation of the child subquery as a string literal, surrounded by parentheses. For example the node represented by

TextNode node = new TextNode("foo");
SearchNode searchNode = new SearchNode(node);
will be represented by the query string `search("(foo)")`.

If there are property restricts, i.e. getProperties is not empty, then in addition to the string representation of the child subquery, the property restricts will be represented as inputs to the createList function, which itself will be an input. So for the node represented by

List<PropertyPath> propertyPaths = List.of(new PropertyPath("example.path"),
                                           new PropertyPath("anotherPath"));
TextNode node = new TextNode("foo");
SearchNode searchNode = new SearchNode(node, propertyPaths);
the query string will be `search("(foo)", createList("example.path", "anotherPath"))`.

Operators in the query string are supported. As such additional escaping are applied to ensure that operators stay scoped to the search node. This applies recursively, so if we had three layers of search i.e. a search function that takes a query containing a nested search, we would apply three levels of escaping. So for the node represented by

TextNode node = new TextNode("foo");
node.setVerbatim(true);
SearchNode nestedSearchNode = new SearchNode(node);
SearchNode searchNode = new SearchNode(nestedSearchNode);
the query string of searchNode will be `search("search(\"(\\\"foo\\\")\")")`