Introduzione
Ci sono più modi per aggiungere la ricerca a un’applicazione. Laravel fornisce strumenti integrati che vanno dal match per keyword alla ricerca semantica con AI, senza servizi esterni obbligatori.Confronto
| Funzione | Servizio esterno | Caratteristiche |
|---|---|---|
whereFullText | Nessuno | Indici full-text integrati di MariaDB/MySQL/PostgreSQL |
whereVectorSimilarTo | Nessuno (PostgreSQL + pgvector) | Similarità semantica. Richiede AI SDK |
Reranking | Provider AI | Riordina qualsiasi set per rilevanza tramite AI |
| Laravel Scout | Nessuno (database engine) / opzionale | Sincronizzazione automatica dell’indice |
Ricerca full-text
Le queryLIKE non capiscono la lingua. La ricerca full-text usa indici dedicati e tiene conto di parole, forme, punteggio di rilevanza.
MariaDB, MySQL e PostgreSQL la supportano nativamente.
Indici full-text
Nota sulla ricerca full-text in giapponese / italiano non-standard
In MySQL la ricerca full-text non anglofona ha limiti (es. AWS RDS supporta solo N-gram parser). Anche PostgreSQL è limitato per lingue con morfologia complessa. Considera motori dedicati come Meilisearch o Typesense.
In MySQL la ricerca full-text non anglofona ha limiti (es. AWS RDS supporta solo N-gram parser). Anche PostgreSQL è limitato per lingue con morfologia complessa. Considera motori dedicati come Meilisearch o Typesense.
Esecuzione
MariaDB/MySQL ordinano per rilevanza. In PostgreSQL
whereFullText filtra soltanto: per l’ordinamento automatico usa il database engine di Scout.orWhereFullText per OR. Vedi il query builder.
Ricerca semantica / vettoriale
Il full-text si basa su match di keyword. La vector search usa embedding generati da AI per rappresentare il significato come array numerici e trovare risultati semanticamente vicini. Esempio: “best wineries in Napa Valley” corrisponde a “Top Vineyards to Visit” pur senza keyword condivise.Richiede Laravel AI SDK. Supporta PostgreSQL (con l’estensione
pgvector) e MongoDB (con laravel-mongodb). Laravel Cloud ha pgvector preinstallato su tutti i database Postgres.Generare gli embedding
ConStringable::toEmbeddings:
Embeddings:
Salvataggio e indicizzazione
Colonnavector in migration:
array:
Ricerca per similarità
whereVectorDistanceLessThan, selectVectorDistance, orderByVectorDistance.
Reranking
L’AI riordina un set di risultati per rilevanza rispetto alla query. Diversa dalla vector search: non richiede embedding preesistenti e si applica a qualsiasi collezione di testo. Pattern efficace: filtra veloce + rerank.rerank.
Laravel Scout
Fin qui abbiamo usato metodi del query builder. Laravel Scout è diverso: aggiungi il traitSearchable e Scout sincronizza automaticamente gli indici.
Database engine
Full-text +LIKE sul DB esistente. Senza servizi esterni.
| Attributo | Strategia |
|---|---|
SearchUsingFullText | Full-text (MATCH...AGAINST / to_tsvector) |
SearchUsingPrefix | Prefisso (example%) |
| Nessuno | Wildcard davanti/dietro (%example%) |
Motori di terze parti
Scout supporta Algolia, Meilisearch, Typesense. API unificata: puoi migrare cambiando poco.Non serve a tutti. I metodi integrati coprono la maggior parte dei casi.
Combinazioni
Full-text + Reranking
Filtra veloce con full-text, poi rerank con AI.Vector + filtri classici
Restringi a un tenant e cerca per similarità.Pagine correlate
Laravel Scout
Guida completa alla sincronizzazione automatica degli indici.
Laravel AI SDK
Configurazione dell’AI SDK per embedding e reranking.
Query Builder
Dettagli su whereFullText, whereVectorSimilarTo, ecc.
Migration
Creazione di indici full-text e colonne vector.