SearchNode


@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, propertyPaths: (Mutable)List<PropertyPath!>)

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

Public functions

Unit

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

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-beta01
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-beta01
SearchNode(childNode: Node, propertyPaths: (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.

propertyPaths: (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

addPropertyPath

Added in 1.1.0-beta01
fun addPropertyPath(propertyPath: PropertyPath): Unit

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

equals

fun equals(o: Any!): Boolean

getChild

Added in 1.1.0-beta01
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-beta01
fun getFunctionName(): String

Returns the name of the function represented by SearchNode.

getPropertyPaths

Added in 1.1.0-beta01
fun getPropertyPaths(): (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-beta01
fun setChild(childNode: Node): Unit

Sets the query searched for in the function.

setPropertyPaths

Added in 1.1.0-beta01
fun setPropertyPaths(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. getPropertyPaths 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\\\")\")")`