MeilisearchEngine
class MeilisearchEngine extends Engine implements DeletesByFilter, UpdatesIndexSettings
Meilisearch search engine implementation.
Provides full-text search using Meilisearch as the backend.
Constants
| protected FILTER_DELETE_TIMEOUT_IN_MS |
The maximum time to wait for a filtered deletion task. |
| protected FILTER_DELETE_INTERVAL_IN_MS |
The interval between filtered deletion task checks. |
Properties
| protected EngineOperationRunner|null | $operationRunner | The operation runner assigned to this engine. |
from Engine |
| protected string | $operationRunnerEngineName | The configured name of this engine. |
from Engine |
Methods
Pluck and return the primary keys of the given results.
Get the total count from a raw result returned by the engine.
Create a search index.
Delete a search index.
Assign the operation runner to this engine.
Run a Builder operation through the operation runner.
Pluck the given results with the given primary key name.
Create a new MeilisearchEngine instance.
Combine application and Builder filters without changing their precedence.
Update the index settings for the given index.
Configure the soft delete filter within the given settings.
Delete all search indexes, optionally scoped by uid prefix.
Generate a tenant token for frontend direct search.
Get the underlying Meilisearch client.
Dynamically call the Meilisearch client instance.
Details
at line 60
void
update(Collection $models)
Update the given models in the search index.
at line 103
void
delete(Collection $models)
Remove the given models from the search index.
at line 123
mixed
search(Builder $builder)
Perform a search against the engine.
at line 134
mixed
paginate(Builder $builder, int $perPage, int $page)
Perform a paginated search against the engine.
at line 278
Collection
mapIds(mixed $results)
Pluck and return the primary keys of the given results.
at line 313
Collection
map(Builder $builder, mixed $results, Model $model)
Map the given results to instances of the given model.
at line 353
LazyCollection
lazyMap(Builder $builder, mixed $results, Model $model)
Map the given results to instances of the given model via a lazy collection.
at line 390
int
getTotalCount(mixed $results)
Get the total count from a raw result returned by the engine.
at line 398
void
flush(Model $model)
Flush all of the model's records from the engine.
at line 454
mixed
createIndex(string $name, array $options = [])
Create a search index.
at line 512
mixed
deleteIndex(string $name)
Delete a search index.
in
Engine 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.
in
Engine at line 117
protected bool
hasObservableOperations()
Determine if this engine has operations worth observing.
in
Engine at line 127
void
runUpdate(Collection $models)
Update the given models through the operation runner.
in
Engine at line 157
void
runDelete(Collection $models)
Delete the given models through the operation runner.
in
Engine at line 205
mixed
runPaginate(Builder $builder, int $perPage, int $page)
Paginate through the operation runner.
in
Engine at line 225
void
runFlush(Model $model)
Flush the given model through the operation runner.
in
Engine 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.
at line 293
Collection
mapIdsFrom(mixed $results, string $key)
Pluck the given results with the given primary key name.
at line 303
Collection
keys(Builder $builder)
Get the results of the query as a Collection of primary keys.
in
Engine at line 297
Collection
get(Builder $builder)
Get the results of the given query mapped onto models.
in
Engine at line 309
LazyCollection
cursor(Builder $builder)
Get a lazy collection for the given query mapped onto models.
at line 48
__construct(Client $meilisearch, bool $softDelete = false)
Create a new MeilisearchEngine instance.
at line 146
protected mixed
performSearch(Builder $builder, array $searchParams = [])
Perform the given search on the engine.
at line 183
protected string
filters(Builder $builder)
Get the filter string for the query.
at line 246
protected string|array
combineFilters(array|string|null $applicationFilters, string $builderFilters)
Combine application and Builder filters without changing their precedence.
at line 268
protected array
buildSortFromOrderByClauses(Builder $builder)
Get the sort array for the query.
at line 409
void
deleteByFilter(Builder $builder)
Delete every document matching the prepared Builder filters.
at line 484
void
updateIndexSettings(string $name, array $settings = [])
Update the index settings for the given index.
at line 500
array
configureSoftDeleteFilter(array $settings = [])
Configure the soft delete filter within the given settings.
at line 527
array
deleteAllIndexes(string|null $prefix = null)
Delete all search indexes, optionally scoped by uid prefix.
When $prefix is non-empty, only indexes whose uid starts with $prefix are deleted. When $prefix is null (or empty string, which str_starts_with matches against every string), every index on the Meilisearch server is deleted.
at line 563
string
generateTenantToken(array $searchRules, string $apiKeyUid, string $apiKey, DateTimeInterface|null $expiresAt = null)
Generate a tenant token for frontend direct search.
Tenant tokens allow secure, scoped searches directly from the frontend without exposing the admin API key. All tenants share a single index, with data isolation enforced at query time via embedded filters.
at line 591
protected bool
usesSoftDelete(Model $model)
Determine if the given model uses soft deletes.
at line 599
Client
getMeilisearchClient()
Get the underlying Meilisearch client.
at line 607
mixed
__call(string $method, array $parameters)
Dynamically call the Meilisearch client instance.