scorpio/sphinx-search
A lightweight Laravel package that brings Sphinx full-text search to your Eloquent models. Define and sync indexes, then query them with a fluent SphinxQL builder using familiar syntax, keeping search fast and easy to maintain in any PHP application.
sphinxsearch/Sphinx-compatible infrastructure, wrapping SphinxClient in OOP classes is a 1–3 day change, not a quarter. That makes "retain + isolate" a credible counter-proposal to "migrate to Elasticsearch/Meilisearch/Typesense," and it lets you sequence: adapter seam now, relevance/UX work later.BuildExcerpts for result snippets. That maps to concrete product decisions: faceted catalog filtering, proximity search, "show matching snippet," per-attribute ranking weights. Decisions it does not support: semantic/vector/hybrid retrieval, near-real-time personalization, typo-tolerant autosuggest at consumer scale. Draw the roadmap boundary there rather than discovering it post-commitment.SearchRepository / SearchService interface with a Sphinx implementation and a stub implementation. Then the engine choice becomes a config swap, and your migration ticket shrinks from "rewrite search" to "add an adapter."NOASSERTION) mean this cannot be a supported component under any normal policy. It must be recorded as fork-and-own: vendored, patched in Composer, owned by a named engineer, with an exit date. That is a decision, and it should be written down before adoption, not after.Consider it when:
sphinx extension installs and loads on your target PHP runtime. Verify this first — if the extension won't build, this package is moot regardless of its merits.SphinxClient calls before a larger refactor — and you have a named owner who will vendor and patch it.Look elsewhere when:
NOASSERTION is a stop sign until counsel signs off; the practical path is a documented internal fork with the license question resolved up front.To executives: This is not a platform bet — treat it as a transition tool. Signals are weak: the package is archived, has no downstream users, and carries an unclear license, so it is not something we can depend on for the long term. Its value is that it makes "keep what we have" a fairly-priced option for one release cycle, so we can spend the saved effort on relevance and UX rather than infrastructure. Recommendation: adopt only behind an internal search interface, with a named owner, a vendor-and-patch plan, and a dated exit review. The real decision on the table is which search engine we standardize on over the next 12–18 months; this package keeps that decision open at near-zero cost rather than making it for us.
To engineering: It's a small object wrapper over the SphinxClient extension — no Laravel bindings, no config, no tests you can lean on. Plan to bind it as a singleton, wrap it in a project-owned interface, and keep it out of domain code. Pin and vendor the package, confirm the PECL extension compiles on our PHP version before we estimate, and build a query-parity harness against the incumbent so the eventual engine swap is measurable. Treat the wrapper as replaceable from day one; assume we own the code we adopt.
How can I help you explore Laravel packages today?