Zoeken in een database via LIKE '%query%' werkt, maar het schaalt slecht en biedt slechte UX. Laravel Scout combineert je Eloquent-modellen met een zoekengine en maakt full-text search een plezier.
Wat is Laravel Scout?
Scout is een officieel Laravel-pakket dat een uniforme API biedt voor meerdere zoekdrivers: Meilisearch, Algolia, Typesense en een database driver voor kleine projecten.
Je voegt de Searchable trait toe aan je model, en Scout synchroniseert automatisch de data naar de zoekengine bij create/update/delete.
Meilisearch: de beste keuze voor self-hosted
Meilisearch is een open-source zoekengine die extreem snel is, typo-tolerant en makkelijk te hosten. Ideaal voor projecten die niet afhankelijk willen zijn van een betaalde cloudservice.
# Start Meilisearch via Docker
docker run -d -p 7700:7700 getmeili/meilisearch
Implementatie
Installeer Scout en de Meilisearch driver:
composer require laravel/scout
composer require meilisearch/meilisearch-php http-interop/http-factory-guzzle
Voeg Searchable toe aan je model:
use Laravel\Scout\Searchable;
class Product extends Model {
use Searchable;
public function toSearchableArray() {
return [
'name' => $this->name,
'description' => $this->description,
'category' => $this->category->name,
];
}
}
Zoeken:
Product::search('sneaker')->get();
Typo-tolerantie in de praktijk
Meilisearch vindt “sneakrs” automatisch bij het zoeken naar “sneakers”. Dit is out-of-the-box gedrag — geen extra configuratie nodig. Gebruikers zoeken namelijk zelden perfect.
Filteren en sorteren
Scout ondersteunt filters en sortering via Meilisearch’s query API:
Product::search('sneaker')
->where('in_stock', true)
->orderBy('price', 'asc')
->get();
Wanneer kies je Scout + Meilisearch?
Voor maatwerk applicaties met een zoekfunctie is dit de beste keuze. Of het nu een product catalogus, een klantenportaal of een kennisbank is.
Bij Meesy integreren we Scout standaard in Laravel ontwikkeling projecten waar zoekfunctionaliteit cruciaal is.
Conclusie
Laravel Scout met Meilisearch maakt full-text search toegankelijk voor elk project. Snel, typo-tolerant en eenvoudig te onderhouden. Neem contact op als je een zoekfunctie wil bouwen die echt werkt.