abstract class Engine

Abstract base class for search engine implementations.

Engines handle the actual indexing and searching operations with external search services like Meilisearch, or in-memory for testing.

Properties

protected EngineOperationRunner|null $operationRunner

The operation runner assigned to this engine.

protected string $operationRunnerEngineName

The configured name of this engine.

Methods

void
update(Collection $models)

Update the given models in the search index.

void
delete(Collection $models)

Remove the given models from the search index.

mixed
search(Builder $builder)

Perform a search against the engine.

mixed
paginate(Builder $builder, int $perPage, int $page)

Perform a paginated search against the engine.

mapIds(mixed $results)

Pluck and return the primary keys of the given results.

map(Builder $builder, mixed $results, Model $model)

Map the given results to instances of the given model.

lazyMap(Builder $builder, mixed $results, Model $model)

Map the given results to instances of the given model via a lazy collection.

int
getTotalCount(mixed $results)

Get the total count from a raw result returned by the engine.

void
flush(Model $model)

Flush all of the model's records from the engine.

mixed
createIndex(string $name, array $options = [])

Create a search index.

mixed
deleteIndex(string $name)

Delete a search index.

setOperationRunner(EngineOperationRunner $runner, string $engineName)

Assign the operation runner to this engine.

bool
hasObservableOperations()

Determine if this engine has operations worth observing.

void
runUpdate(Collection $models)

Update the given models through the operation runner.

void
runDelete(Collection $models)

Delete the given models through the operation runner.

mixed
runSearch(Builder $builder)

Search through the operation runner.

mixed
runPaginate(Builder $builder, int $perPage, int $page)

Paginate through the operation runner.

void
runFlush(Model $model)

Flush the given model through the operation runner.

mixed
runOperation(string $operation, Builder $builder, Closure $callback, string|null $index = null)

Run a Builder operation through the operation runner.

mapIdsFrom(mixed $results, string $key)

Pluck and return the primary keys of the given results using the given key name.

keys(Builder $builder)

Get the results of the query as a Collection of primary keys.

get(Builder $builder)

Get the results of the given query mapped onto models.

cursor(Builder $builder)

Get a lazy collection for the given query mapped onto models.

Details

at line 40
abstract void update(Collection $models)

Update the given models in the search index.

Parameters

Collection $models

Return Value

void

at line 47
abstract void delete(Collection $models)

Remove the given models from the search index.

Parameters

Collection $models

Return Value

void

Perform a search against the engine.

Parameters

Builder $builder

Return Value

mixed

at line 57
abstract mixed paginate(Builder $builder, int $perPage, int $page)

Perform a paginated search against the engine.

Parameters

Builder $builder
int $perPage
int $page

Return Value

mixed

at line 62
abstract Collection mapIds(mixed $results)

Pluck and return the primary keys of the given results.

Parameters

mixed $results

Return Value

Collection

at line 67
abstract Collection map(Builder $builder, mixed $results, Model $model)

Map the given results to instances of the given model.

Parameters

Builder $builder
mixed $results
Model $model

Return Value

Collection

at line 72
abstract LazyCollection lazyMap(Builder $builder, mixed $results, Model $model)

Map the given results to instances of the given model via a lazy collection.

Parameters

Builder $builder
mixed $results
Model $model

Return Value

LazyCollection

at line 77
abstract int getTotalCount(mixed $results)

Get the total count from a raw result returned by the engine.

Parameters

mixed $results

Return Value

int

at line 82
abstract void flush(Model $model)

Flush all of the model's records from the engine.

Parameters

Model $model

Return Value

void

at line 87
abstract mixed createIndex(string $name, array $options = [])

Create a search index.

Parameters

string $name
array $options

Return Value

mixed

at line 92
abstract mixed deleteIndex(string $name)

Delete a search index.

Parameters

string $name

Return Value

mixed

at line 102
Engine setOperationRunner(EngineOperationRunner $runner, string $engineName)

Assign the operation runner to this engine.

Boot-only. The runner persists on this engine for the worker lifetime. Engines without observable operations retain no runner.

Parameters

EngineOperationRunner $runner
string $engineName

Return Value

Engine

at line 117
protected bool hasObservableOperations()

Determine if this engine has operations worth observing.

Return Value

bool

at line 127
void runUpdate(Collection $models)

Update the given models through the operation runner.

Parameters

Collection $models

Return Value

void

at line 157
void runDelete(Collection $models)

Delete the given models through the operation runner.

Parameters

Collection $models

Return Value

void

at line 185
mixed runSearch(Builder $builder)

Search through the operation runner.

Parameters

Builder $builder

Return Value

mixed

at line 205
mixed runPaginate(Builder $builder, int $perPage, int $page)

Paginate through the operation runner.

Parameters

Builder $builder
int $perPage
int $page

Return Value

mixed

at line 225
void runFlush(Model $model)

Flush the given model through the operation runner.

Parameters

Model $model

Return Value

void

at line 255
mixed runOperation(string $operation, Builder $builder, Closure $callback, string|null $index = null)

Run a Builder operation through the operation runner.

An omitted index uses the Builder's configured or searchable index. Pass an explicit index when the operation targets another dataset.

Parameters

string $operation
Builder $builder
Closure $callback
string|null $index

Return Value

mixed

at line 281
Collection mapIdsFrom(mixed $results, string $key)

Pluck and return the primary keys of the given results using the given key name.

Parameters

mixed $results
string $key

Return Value

Collection

at line 289
Collection keys(Builder $builder)

Get the results of the query as a Collection of primary keys.

Parameters

Builder $builder

Return Value

Collection

at line 297
Collection get(Builder $builder)

Get the results of the given query mapped onto models.

Parameters

Builder $builder

Return Value

Collection

at line 309
LazyCollection cursor(Builder $builder)

Get a lazy collection for the given query mapped onto models.

Parameters

Builder $builder

Return Value

LazyCollection