Oihana PHP Arango

aqlSearch.php

Table of Contents

Functions

aqlSearch()  : string
Builds an AQL `SEARCH` clause for a query, with optional Analyzer wrapping and an optional `OPTIONS` object.

Functions

aqlSearch()

Builds an AQL `SEARCH` clause for a query, with optional Analyzer wrapping and an optional `OPTIONS` object.

aqlSearch([array<string|int, mixed> $init = [] ]) : string

The SEARCH operation guarantees the use of View indexes for an efficient execution plan. Using FILTER on Views does not utilize indexes and filtering is done as a post-processing step.

$init keys:

  • AQL::SEARCH — the search expression. Without it everything else is ignored and an empty string is returned.
  • AQL::ANALYZER (optional) — an Analyzer name; the expression is wrapped in ANALYZER(expr, "name") via analyzer(), setting the Analyzer for the expression and its nested functions.
  • AQL::SEARCH_OPTIONS (optional) — the SEARCH … OPTIONS { … } object (collections, conditionOptimization, countApproximate, parallelism), accepted as an associative array (hydrated into SearchOptions, unknown keys dropped, null properties omitted), a SearchOptions instance, any JsonSerializable/plain object, or a pre-encoded JSON string — the same tolerance as aqlOptions().

Not to be confused with AQL::OPTIONS, the FOR-level options (indexHint, useCache, … — see ForOptions): a FOR over a collection takes AQL::OPTIONS, a SEARCH against a View takes AQL::SEARCH_OPTIONS. aqlFor() forwards its whole $init here, so all three keys work through it directly.

Example:

use oihana\arango\db\enums\AQL;
use oihana\arango\db\enums\ConditionOptimization;
use function oihana\arango\db\operations\aqlSearch;

echo aqlSearch([ AQL::SEARCH => 'PHRASE(doc.text, "search phrase", "text_en")' ]) . PHP_EOL;
// SEARCH PHRASE(doc.text, "search phrase", "text_en")

echo aqlSearch
([
    AQL::SEARCH         => 'PHRASE(doc.text, "search phrase")' ,
    AQL::ANALYZER       => 'text_en' ,
    AQL::SEARCH_OPTIONS => [ 'conditionOptimization' => ConditionOptimization::NONE ] ,
]) . PHP_EOL;
// SEARCH ANALYZER(PHRASE(doc.text, "search phrase"),"text_en") OPTIONS {"conditionOptimization":"none"}

echo aqlSearch(); // ''
Parameters
$init : array<string|int, mixed> = []

Array containing the key AQL::SEARCH with the expression to search, and optionally AQL::ANALYZER and AQL::SEARCH_OPTIONS.

Tags
throws
ReflectionException
see
https://docs.arangodb.com/stable/aql/high-level-operations/search
SearchOptions
analyzer()
aqlFor()
since
1.0.0

author Marc Alcaraz

Return values
string

The compiled AQL SEARCH clause, or an empty string if no search expression is provided.

On this page

Search results