Laravel Scout
Agent Workflow (MANDATORY)
Before ANY implementation, use TeamCreate to spawn 3 agents:
- •fuse-ai-pilot:explore-codebase - Analyze existing model and search patterns
- •fuse-ai-pilot:research-expert - Verify Scout docs via Context7
- •mcp__context7__query-docs - Check search and indexing patterns
After implementation, run fuse-ai-pilot:sniper for validation.
Overview
| Component | Purpose |
|---|---|
| Searchable Trait | Makes Eloquent models searchable |
| Search Drivers | Meilisearch, Algolia, database, collection |
| Indexing | Automatic sync on model changes |
| Search Builder | Fluent search API with filters |
Decision Guide: Search Driver
code
Which driver? ├── Production (recommended) → Meilisearch (fast, self-hosted, free) ├── Managed service → Algolia (hosted, pay per search) ├── Small dataset → database (no extra infra) └── Testing → collection (in-memory, no engine)
Quick Setup
bash
composer require laravel/scout composer require meilisearch/meilisearch-php http-interop/http-factory-guzzle
env
SCOUT_DRIVER=meilisearch MEILISEARCH_HOST=http://127.0.0.1:7700 MEILISEARCH_KEY=masterKey
php
$results = Article::search('laravel tutorial')->paginate(15);
Critical Rules
- •Use
toSearchableArray()to control indexed data - •Queue indexing with
SCOUT_QUEUE=truefor performance - •Use
searchable()for bulk import after setup - •Pause indexing during seeders with
Scout::withoutSyncing()
Reference Guide
| Need | Reference |
|---|---|
| Searchable trait, indexing, conditions | searchable.md |
| Driver setup, Meilisearch, Algolia | drivers.md |
Best Practices
DO
- •Use Meilisearch for production (fast, typo-tolerant)
- •Queue indexing operations (
SCOUT_QUEUE=true) - •Limit indexed fields with
toSearchableArray()
DON'T
- •Index sensitive data (passwords, tokens)
- •Forget to import existing records after setup
- •Use collection driver in production