Inleiding
Er zijn meerdere manieren om zoekfunctionaliteit aan je applicatie toe te voegen, afhankelijk van je use case. Laravel biedt ingebouwde tools — van keyword-matching tot semantisch zoeken met AI — zonder dat externe diensten nodig zijn.Functievergelijking
Full-text zoeken
LIKE-query’s zijn handig voor eenvoudige gedeeltelijke matches, maar begrijpen geen taal. Full-text zoeken gebruikt een speciale index en houdt rekening met woordgrenzen, woordvormen en relevantiescores.
MariaDB, MySQL en PostgreSQL ondersteunen full-text zoeken standaard; externe diensten zijn niet nodig.
Een full-text index toevoegen
Om full-text zoeken te gebruiken voeg je eerst een full-text index toe aan de betreffende kolommen.Aandachtspunten bij Japans full-text zoeken
Japans full-text zoeken in MySQL is wat lastig in gebruik. Op AWS RDS is alleen de N-gram-parser beschikbaar en kun je geen morfologische-analyseplugin (MeCab) toevoegen, wat beperkingen oplevert. Voor MySQL op Laravel Cloud geldt vermoedelijk hetzelfde. Ook in PostgreSQL is de ondersteuning voor Japanse woordvormen beperkt. Is de precisie van Japans zoeken belangrijk, overweeg dan een gespecialiseerde engine zoals Meilisearch of Typesense.
Japans full-text zoeken in MySQL is wat lastig in gebruik. Op AWS RDS is alleen de N-gram-parser beschikbaar en kun je geen morfologische-analyseplugin (MeCab) toevoegen, wat beperkingen oplevert. Voor MySQL op Laravel Cloud geldt vermoedelijk hetzelfde. Ook in PostgreSQL is de ondersteuning voor Japanse woordvormen beperkt. Is de precisie van Japans zoeken belangrijk, overweeg dan een gespecialiseerde engine zoals Meilisearch of Typesense.
Full-text query’s uitvoeren
Zodra de index is toegevoegd, zoek je met de methodewhereFullText. Laravel genereert de juiste SQL voor de gebruikte databasedriver (MATCH(...) AGAINST(...) bij MariaDB / MySQL, to_tsvector(...) @@ plainto_tsquery(...) bij PostgreSQL).
Bij MariaDB en MySQL worden de resultaten automatisch gesorteerd op relevantiescore. Bij PostgreSQL filtert
whereFullText alleen de matchende records en wordt er niet op relevantie gesorteerd. Heb je op PostgreSQL automatische relevantiesortering nodig, dan is de database-engine van Scout een goede optie.orWhereFullText kun je full-text zoeken ook als OR-conditie toevoegen. Zie de querybuilder-documentatie voor meer details.
Semantisch / vectorzoeken
Full-text zoeken leunt op keyword-matches. Vectorzoeken hanteert een fundamenteel andere aanpak: met door AI gegenereerde vector-embeddings wordt de betekenis van tekst als numerieke array weergegeven en wordt gezocht naar semantisch nabije resultaten. Zo levert een zoekopdracht naar “best wineries in Napa Valley” een artikel op met de titel “Top Vineyards to Visit”. De woorden komen niet overeen, maar de betekenis wel.Voor vectorzoeken is de Laravel AI SDK nodig; ondersteund worden PostgreSQL (vereist de
pgvector-extensie), MariaDB 11.7 en hoger, en MongoDB (vereist het Laravel MongoDB-pakket). Op alle Postgres-databases van Laravel Cloud is pgvector vooraf geïnstalleerd.Embeddings genereren
Een embedding is een hoogdimensionale numerieke array (meestal honderden tot duizenden dimensies) die de betekenis van tekst weergeeft. Je genereert er een met de methodetoEmbeddings van Laravels Stringable-klasse.
Embeddings efficiënter (er is maar één API-aanroep nodig).
Vectoren opslaan en indexeren
Om vector-embeddings op te slaan definieer je in een migratie eenvector-kolom. Stem dimensions af op het aantal outputdimensies van je embedding-provider (bijvoorbeeld: text-embedding-3-small van OpenAI heeft 1536 dimensies). Roep index() aan om een HNSW-index te maken; dat versnelt gelijkenisonderzoek op grote datasets aanzienlijk.
AsVector-cast om de conversie tussen PHP-arrays en het vectorformaat van de database te automatiseren.
Zoeken op gelijkenis
Zodra de embeddings zijn opgeslagen, zoek je vergelijkbare records met de methodewhereVectorSimilarTo. Deze vergelijkt vectoren op cosinusgelijkenis, filtert resultaten onder de minSimilarity-drempel weg en sorteert automatisch op relevantie. De drempel is een waarde tussen 0.0 en 1.0, waarbij 1.0 een exacte match betekent.
whereVectorDistanceLessThan, selectVectorDistance en orderByVectorDistance beschikbaar. Zie de querybuilder-documentatie en de AI SDK-documentatie voor meer details.
Reranking
Reranking is een techniek waarbij een AI-model een resultaatset opnieuw sorteert op relevantie voor de query. Anders dan bij vectorzoeken hoef je geen embeddings vooraf te berekenen en op te slaan; je kunt het toepassen op elke willekeurige tekstcollectie. Vooral het patroon “zoeken → reranken” is effectief: eerst snel een grote hoeveelheid records inperken met full-text zoeken en daarna reranking toepassen. Zo combineer je de snelheid van de database met de precisie van AI.rerank-macro: je geeft alleen een veldnaam (of closure) en een query door om Eloquent-resultaten te reranken.
Laravel Scout
Alle zoektechnieken tot nu toe riepen rechtstreeks querybuilder-methoden aan. Laravel Scout hanteert een andere aanpak: voeg deSearchable-trait toe aan een Eloquent-model en Scout synchroniseert de zoekindex automatisch bij het aanmaken, bijwerken en verwijderen van records.
Database-engine
De ingebouwde database-engine van Scout voert full-text enLIKE-zoekopdrachten uit op je bestaande database. Er is geen externe dienst of extra infrastructuur nodig.
Met de methode toSearchableArray definieer je de doorzoekbare kolommen. Via PHP-attributen geef je per kolom een zoekstrategie op.
Na het toevoegen van de trait kun je het model doorzoeken met de
search-methode. De database-engine van Scout geeft ook op PostgreSQL de resultaten automatisch terug op relevantievolgorde.
Third-party engines
Scout ondersteunt ook third-party zoekengines zoals Algolia, Meilisearch en Typesense. Deze bieden geavanceerde functies als typo-tolerantie, facetzoeken, geo-zoeken en custom ranking. Omdat Scout een uniforme API biedt, zijn er slechts minimale codewijzigingen nodig als je later van de database-engine naar een third-party engine migreert.De meeste applicaties hebben geen externe zoekengine nodig. De ingebouwde technieken op deze pagina dekken de overgrote meerderheid van de use cases.
Technieken combineren
De zoektechnieken op deze pagina sluiten elkaar niet uit. Door ze te combineren behaal je de beste resultaten.Full-text zoeken + reranking
Beperk snel de kandidaten met full-text zoeken en sorteer ze daarna met reranking op semantische relevantie. Een patroon dat databasesnelheid en AI-precisie combineert.Vectorzoeken + gewone filters
Combineer vectorgelijkenisonderzoek met gewonewhere-clausules voor semantisch zoeken binnen een specifieke subset. Handig als je semantisch wilt zoeken terwijl je filtert op team of categorie.
Gerelateerde pagina’s
Laravel Scout
De complete gids voor automatische indexsynchronisatie van modellen met de Searchable-trait.
Laravel AI SDK
De configuratie van de AI SDK die nodig is voor vector-embeddings en reranking.
Querybuilder
Details over querybuilder-methoden zoals whereFullText en whereVectorSimilarTo.
Migrations
Hoe je full-text indexen en vectorkolommen aanmaakt.