Performs a full-text search.
The full-text search expression is evaluated against the set of full-text indexed properties within the full-text search scope. If {@link #getPropertyName property} is specified, the full-text search scopeis the property of that name on the {@link #getSelectorName selector} nodein the node-tuple; otherwise the full-text search scope is all properties of the {@link #getSelectorName selector} node (or, in some implementations,all properties in the node subtree).
Which properties (if any) in a repository are full-text indexed is implementation determined.
It is also implementation determined whether {@link #getFullTextSearchExpression fullTextSearchExpression} isindependently evaluated against each full-text indexed property in the full-text search scope, or collectively evaluated against the set of such properties using some implementation-determined mechanism.
Similarly, for multi-valued properties, it is implementation determined whether {@link #getFullTextSearchExpression fullTextSearchExpression} isindependently evaluated against each element in the array of values, or collectively evaluated against the array of values using some implementation-determined mechanism.
At minimum, an implementation must support the following {@link #getFullTextSearchExpression fullTextSearchExpression} grammar:
fullTextSearchExpression ::= [-]term {whitespace [OR] whitespace [-]term} term ::= word | '"' word {whitespace word} '"' word ::= (A string containing no whitespace) whitespace ::= (A string of only whitespace)
A query satisfies a
FullTextSearch
constraint if the value (or values) of the full-text indexed properties within the full-text search scope satisfy the specified {@link #getFullTextSearchExpression fullTextSearchExpression}, evaluated as follows:
- A term not preceded with "
-
" (minus sign) is satisfied only if the value contains that term. - A term preceded with "
-
" (minus sign) is satisfied only if the value does not contain that term. - Terms separated by whitespace are implicitly "ANDed".
- Terms separated by "
OR
" are "ORed". - "AND" has higher precedence than "OR".
- Within a term, each double quote (
"
), "-
" (minus sign), and "\
" (backslash) must be escaped by a preceding "\
" (backslash).
The query is invalid if:
- {@link #getSelectorName selector} is not the name of a selector in thequery, or
- {@link #getPropertyName property} is specified but is not a syntacticallyvalid JCR name, or
- {@link #getFullTextSearchExpression fullTextSearchExpression} does notconform to the above grammar (as augmented by the implementation).
If {@link #getPropertyName property} is specified but, for a node-tuple,the selector node does not have a property named {@link #getPropertyName property}, the query is valid but the constraint is not satisfied.
@since JCR 2.0