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.
Architecture fit. GuavaCZ/Search is a Laravel package (service-provider-based, Composer-installed) that adds search capabilities to Eloquent models. The 1.0.0-alpha.3 release is a compatibility update adding Laravel 11 support (commit 6ec9fe7). For a Laravel-based product this is a plausible fit at the framework-integration level — it slots into the existing service container, config publishing, and migration conventions rather than requiring a separate runtime. That said, the release notes give us no visibility into the search backend (database full-text, driver abstraction, external engine), indexing model, or query API. Those determine whether the architecture actually matches our data volume and query patterns, and they are unresolved.
Integration feasibility. Installing via Composer and registering the service provider is low-effort. The real integration cost sits in three unknowns: (1) whether search requires schema changes or a separate index store, (2) whether the query API can express the filters, sorting, and relevance behaviour our product needs, and (3) whether it supports the model relationships we actually search across. None of these are answered by an alpha release note that only says "update for laravel 11."
Technical risk. High, and concentrated in maturity rather than technology. This is a pre-1.0 alpha on its third alpha increment, published 2024-04-03, maintained under a single GitHub org (GuavaCZ) with no evidence in the release data of a contributor base, release cadence, or downstream adoption. Alpha-stage software means the public API can change without a major-version signal, and the versioning contract that normally protects us (semver) does not yet apply. The Laravel 11 bump is a positive signal — it shows the maintainer is tracking the framework — but it also implies this release is primarily a maintenance patch, not a stabilisation milestone.
Key questions.
Stack fit. Assumes a Laravel 8/9/10/11 application on PHP 8.x with Eloquent as the data layer. The package's Laravel 11 support matters most if we are on, or planning to move to, Laravel 11 — on Laravel 10 it is neutral. There is no information in the release data about PHP version floors, database engine requirements, or optional drivers, so stack fit must be confirmed by reading composer.json and the package README rather than inferred from the changelog.
Migration path. Greenfield adoption is straightforward: require the package, publish config, run any provided index migrations, and wrap a small number of read paths behind its query API. Retrofitting an existing search implementation is materially harder — search APIs are hard to abstract, and a pre-1.0 package gives no deprecation runway if we later swap it out. If we adopt, we should confine usage behind our own thin search interface so the vendor is replaceable without touching call sites.
Compatibility. Three compatibility axes need explicit verification before any commitment: Laravel minor version, PHP minor version, and database engine/version. The alpha.3 release only claims Laravel 11; it says nothing about whether older Laravel versions remain supported, which matters if we run a mixed fleet or have services pinned to Laravel 10. We should also check whether alpha.2 → alpha.3 introduced any constraint narrowing that would drop a version we depend on.
Sequencing.
Maintenance. Ongoing cost is low in code terms and high in attention terms. There is no LTS commitment on an alpha, so we own the upgrade work for every alpha increment and for the eventual 1.0.0 breaking changes. We should budget for reading release notes on every bump rather than relying on semver to protect us, and pin the version in composer.json with an explicit, documented upgrade step.
Support. Support is effectively community/volunteer via GitHub issues, with no vendor SLA. That is acceptable for a non-critical internal tool and likely unacceptable for a revenue-path search feature. If search is customer-facing, we need an internal owner who can read the source and patch it, or we should prefer a package with commercial backing.
Scaling. Unquantified. The release notes provide no performance data, and pre-1.0 packages frequently have unoptimised indexing paths — full reindexes on write, N+1 hydration in result mapping, in-PHP relevance scoring. The only responsible position is to load-test with our own data shape before committing. If our corpus is large or write-heavy, this is the single biggest risk in the assessment.
Failure modes.
Ramp-up. Small surface area means engineers can be productive in days, not weeks — the package is a Laravel-native API, and anyone fluent in Eloquent will recognise the patterns. The ramp-up cost that gets underestimated is debugging: when results are wrong, the engineer must reason about the package's internals, and on a pre-1.0 project with thin documentation there may be little to read. Assume one engineer becomes the designated owner and spends meaningful time in the source before the team is genuinely self-sufficient.
Recommendation. Proceed to a time-boxed spike, not to adoption. The Laravel 11 support in alpha.3 is a genuine and welcome signal of maintenance, but a single compatibility commit does not change the core finding: this is immature, thinly documented, single-maintainer software with an unstable API and no performance evidence. Adopt only behind an internal abstraction, only pinned, and only if the spike shows it handles our hardest search case at our real data volume. Revisit at 1.0.0 GA.
How can I help you explore Laravel packages today?