TypesenseEngine
class TypesenseEngine extends Engine implements DeletesByFilter, SupportsSemanticSearch
Typesense search engine implementation.
Provides full-text, semantic, and hybrid search using Typesense as the backend.
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.
Get the import concurrency allowed for the given model.
Assign the operation runner to this engine.
Run a Builder operation through the operation runner.
Pluck and return the primary keys of the given results using the given key name.
Create a new TypesenseEngine instance.
Add embeddings to the given searchable records.
Import the given documents into the index.
Create an import sorting data object for a given document.
Delete a document from the index.
Execute the given search using the appropriate Typesense endpoint.
Convert a multi-search error result into a Typesense exception.
Build the search parameters for a given Scout query builder.
Apply semantic and hybrid search parameters to the search parameters.
Target the embedding field for a semantic search using native embeddings.
Prepare the "query_by" fields and their per-field parameters for a hybrid search.
Build the "vector_query" parameter for the search.
Get the maximum vector distance for the given minimum similarity.
Append a field to a comma-separated field list if not already present.
Combine application and Builder filters without changing their precedence.
Parse the given filter value.
Create a "where" filter string.
Create a "where in" filter string.
Create a "where not in" filter string.
Parse the order by fields for the query.
Create the model's Typesense collection.
Determine if Typesense should generate embeddings natively.
Generate and validate embeddings using the optional Hypervel AI SDK.
Get a detached Typesense collection handle.
Get the underlying Typesense client.
Get a Scout configuration value.
Dynamically proxy missing methods to the Typesense client instance.
Details
at line 67
void
update(Collection $models)
Update the given models in the search index.
at line 229
void
delete(Collection $models)
Remove the given models from the search index.
at line 269
mixed
search(Builder $builder)
Perform a search against the engine.
at line 290
mixed
paginate(Builder $builder, int $perPage, int $page)
Perform a paginated search against the engine.
at line 795
Collection
mapIds(mixed $results)
Pluck and return the primary keys of the given results.
at line 807
Collection
map(Builder $builder, mixed $results, Model $model)
Map the given results to instances of the given model.
at line 845
LazyCollection
lazyMap(Builder $builder, mixed $results, Model $model)
Map the given results to instances of the given model via a lazy collection.
at line 874
int
getTotalCount(mixed $results)
Get the total count from a raw result returned by the engine.
at line 884
void
flush(Model $model)
Flush all of the model's records from the engine.
at line 932
mixed
createIndex(string $name, array $options = [])
Create a search index.
at line 945
mixed
deleteIndex(string $name)
Delete a search index.
in
Engine at line 98
int
importConcurrency(Model $model, int $configured)
Get the import concurrency allowed for the given model.
in
Engine at line 111
Engine
setOperationRunner(EngineOperationRunner $runner, string $engineName)
Assign the operation runner to this engine.
The runner persists on a cached engine for the worker lifetime. Engines without observable operations retain no runner.
in
Engine at line 127
protected bool
hasObservableOperations()
Determine if this engine has operations worth observing.
in
Engine at line 137
void
runUpdate(Collection $models)
Update the given models through the operation runner.
in
Engine at line 167
void
runDelete(Collection $models)
Delete the given models through the operation runner.
in
Engine at line 215
mixed
runPaginate(Builder $builder, int $perPage, int $page)
Paginate through the operation runner.
in
Engine at line 235
void
runFlush(Model $model)
Flush the given model through the operation runner.
in
Engine at line 265
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.
in
Engine at line 291
Collection
mapIdsFrom(mixed $results, string $key)
Pluck and return the primary keys of the given results using the given key name.
in
Engine at line 299
Collection
keys(Builder $builder)
Get the results of the query as a Collection of primary keys.
in
Engine at line 307
Collection
get(Builder $builder)
Get the results of the given query mapped onto models.
in
Engine at line 319
LazyCollection
cursor(Builder $builder)
Get a lazy collection for the given query mapped onto models.
at line 54
__construct(Client $typesense, int $maxTotalResults, array $config = [])
Create a new TypesenseEngine instance.
at line 134
protected array
addEmbeddingsToRecords(array $records, array $settings)
Add embeddings to the given searchable records.
at line 183
protected Collection
importDocuments(Collection $collectionIndex, array $documents, string|null $action = null)
Import the given documents into the index.
at line 211
protected stdClass
createImportSortingDataObject(array $document)
Create an import sorting data object for a given document.
at line 253
protected array
deleteDocument(Collection $collectionIndex, mixed $modelId)
Delete a document from the index.
Returns an empty array if the document doesn't exist (idempotent delete). Other errors (network, auth, etc.) are allowed to bubble up.
at line 312
protected mixed
performSearch(Builder $builder, array $options = [])
Perform the given search on the engine.
at line 336
protected mixed
executeSearch(Builder $builder, Documents $documents, array $options)
Execute the given search using the appropriate Typesense endpoint.
at line 365
protected TypesenseClientError
marshalMultiSearchException(array $result)
Convert a multi-search error result into a Typesense exception.
at line 386
protected array
performPaginatedSearch(Builder $builder)
Perform a paginated search on the engine.
at line 435
array
buildSearchParameters(Builder $builder, int $page, int|null $perPage)
Build the search parameters for a given Scout query builder.
at line 493
protected array
applySemanticSearchParameters(Builder $builder, array $parameters)
Apply semantic and hybrid search parameters to the search parameters.
at line 530
protected array
applyNativeSemanticQueryBy(array $parameters, string $attribute)
Target the embedding field for a semantic search using native embeddings.
at line 555
protected array
applyHybridQueryBy(array $parameters, array $settings)
Prepare the "query_by" fields and their per-field parameters for a hybrid search.
at line 602
protected string|null
buildVectorQueryParameter(Builder $builder, array $settings)
Build the "vector_query" parameter for the search.
at line 640
protected float|int
distanceThreshold(float|int $similarity)
Get the maximum vector distance for the given minimum similarity.
at line 652
protected string
appendField(string $fields, string $field)
Append a field to a comma-separated field list if not already present.
at line 666
protected string
combineFilters(string $applicationFilters, string $builderFilters)
Combine application and Builder filters without changing their precedence.
at line 682
protected string
filters(Builder $builder)
Prepare the filters for a given search query.
at line 714
protected array|string|int|float
parseFilterValue(array|string|bool|int|float|BackedEnum $value)
Parse the given filter value.
at line 736
protected string
parseWhereFilter(array|string|int|float $value, string $key, string $operator = '=')
Create a "where" filter string.
at line 761
protected string
parseWhereInFilter(array $value, string $key)
Create a "where in" filter string.
at line 771
protected string
parseWhereNotInFilter(array $value, string $key)
Create a "where not in" filter string.
at line 781
protected string
parseOrderBy(array $orders)
Parse the order by fields for the query.
at line 897
void
deleteByFilter(Builder $builder)
Delete every document matching the prepared Builder filters.
at line 956
protected void
createCollectionFromModel(Model $model, string $collectionName)
Create the model's Typesense collection.
at line 982
protected array
modelSettings(Model $model)
Get the configured settings for a model.
at line 992
protected array
embeddingSettings(Model $model)
Get the validated embedding settings for a model.
at line 1032
protected bool
usesNativeEmbeddings(array $settings)
Determine if Typesense should generate embeddings natively.
at line 1044
protected array
generateEmbeddings(array $inputs, array $settings)
Generate and validate embeddings using the optional Hypervel AI SDK.
at line 1067
protected Collection
collection(string $name)
Get a detached Typesense collection handle.
at line 1079
protected bool
usesSoftDelete(Model $model)
Determine if model uses soft deletes.
at line 1087
Client
getTypesenseClient()
Get the underlying Typesense client.
at line 1095
protected mixed
getConfig(string $key, mixed $default = null)
Get a Scout configuration value.
at line 1105
mixed
__call(string $method, array $parameters)
Dynamically proxy missing methods to the Typesense client instance.