Skip to main content

Introduzione

Laravel Scout è una soluzione driver-based che aggiunge la ricerca full-text ai modelli Eloquent. Sincronizza automaticamente record Eloquent e indici di ricerca tramite osservatori del modello. Scout include il motore integrato database che sfrutta il full-text di MySQL/PostgreSQL e la clausola LIKE senza servizi esterni. In produzione, per tolleranza ai typo, ricerche facettate e geospaziali, i motori esterni sono utili.

Motori supportati

Installazione

Aggiungi il trait Laravel\Scout\Searchable al modello.

Code

Con motori esterni si consiglia di attivare le code per la sincronizzazione in background.
Oppure:
Avvia un worker dedicato:

Job univoci

Per applicazioni molto scritte, evita job duplicati sullo stesso record.

Prerequisiti dei driver

Algolia

Impostazioni indice

Sincronizza:

Meilisearch

Meilisearch è veloce e open source. In locale è comodo con Laravel Sail.
Docker diretto:
Controlla i breaking change di Meilisearch quando aggiorni Scout.

Impostazioni indice (Meilisearch)

Registra filterableAttributes per where() e sortableAttributes per orderBy().
Attenzione ai tipi:

Typesense

Typesense è open source, supporta keyword, semantica, geo e vettori.
Casta la primary key a stringa e la data creazione a timestamp UNIX:

Motore database / collection

Senza servizi esterni. database: full-text MySQL/PostgreSQL e LIKE.
collection: filtro in PHP (anche SQLite), per dev/test.
Con database engine gli indici non vanno gestiti a parte.

Trait Searchable

toSearchableArray()

Nome dell’indice

Strategie di ricerca (database engine)

Per SearchUsingFullText serve un indice full-text.

Condizionale

Non funziona con database engine. Usa clausole where.

Gestione degli indici

Sezione rilevante con Algolia/Meilisearch/Typesense. Con database engine non serve.

Import di record esistenti

Con coda:

Flush

Pausa della sincronizzazione

Aggiungi/rimuovi manualmente

Con delete() la rimozione è automatica.

Ricerca

Da route o controller:
Grezzo:

Paginazione

Con database engine anche simplePaginate:

Filtri e ordinamento

Con Meilisearch registra prima gli attributi filtrabili.
Personalizza la query Eloquent:

Eager loading

In batch import:
Nelle code non è sempre possibile.

Soft delete

Motori personalizzati

Estendi Laravel\Scout\Engines\Engine e implementa 8 metodi:
Registra in AppServiceProvider::boot():

Pagine correlate

Eloquent ORM

Basi dei modelli Eloquent.

Relazioni Eloquent

Definizione delle relazioni e eager loading.

Code

Scout aggiorna gli indici in background via code.
Ultima modifica il 13 luglio 2026