guava/search
Guava Search is a Laravel package for adding flexible search to Eloquent models, with a simple API for indexing and querying records. It helps you build fast, database-backed search experiences without external services.
This is the first assessment for guavacz/search, so treat 1.0.0-alpha.3 as the baseline. It is an alpha — pin the exact version in composer.json ("guavacz/search": "1.0.0-alpha.3") rather than using ^1.0.
illuminate/* constraints in composer.json against your app before anything else.composer require guavacz/search:1.0.0-alpha.3
php artisan vendor:publish --provider="Guava\Search\SearchServiceProvider"
Read the published config (config/search.php) end-to-end before writing code — in an alpha package the config is the most reliable description of what the package actually supports.src/Drivers/ (what drivers ship and what each supports) → the model trait/interface in src/Concerns/ (the contract you implement) → the Artisan commands registered by the service provider.Because this is a 0.x alpha, budget an hour to read the source of the driver you intend to use. It is small and it will save you guessing at behaviour later.
Searchable-style trait (or interface) on each Eloquent model you want indexed, plus per-model index configuration. Keep index definitions in the model or in a dedicated Search config class, not scattered in controllers.artisan search:index-style command. This gives you a re-runnable path when the index drifts, which it will.RefreshDatabase in feature tests, and index inside the test setup. If the package ships a fake/null driver, use it for unit tests that assert what was searched rather than what came back.routes/console.php / the scheduler so a nightly full reindex is the safety net behind incremental updates.src/ tree — signature changes to the trait, config keys, and driver contracts are the things that will silently break you.php artisan config:clear. A stale cached config is the most common cause of "my driver change did nothing."insert() (which bypass model events), will be missing from the index. Always have a full-reindex command ready and know how to run it.How can I help you explore Laravel packages today?