Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Searchy Laravel Package

tom-lingham/searchy

Searchy is a Laravel package for fuzzy database searching. Query multiple columns with relevance scoring and drivers like simple, fuzzy, and levenshtein, returning the most relevant records instead of relying on plain exact LIKE matches.

View on GitHub
Deep Wiki
Context7

Product Decisions This Supports

  • Feature: typo-tolerant search, cheaply. Searchy adds fuzzy matching, partial string matching and Levenshtein-based scoring to an existing Laravel app via Eloquent. It is the fastest path to "search that forgives misspellings" in admin panels, internal tooling, contact/CRM lookup, and small product catalogs — roughly hours of integration instead of a sprint of custom scoring logic.
  • Build vs. buy vs. borrow. The usual decision is framed as build-it-yourself or buy a search SaaS. This is the third option: borrow a small MIT library. Hand-rolling Levenshtein scoring, token splitting and match thresholds is 1–3 dev days plus edge cases and ongoing tuning; Searchy collapses that into configuration. That makes it the default recommendation when search is a supporting feature rather than a differentiator.
  • Sequencing the search roadmap. It gives a defensible stopgap tier: ship acceptable search now, defer Meilisearch / Typesense / Algolia / Elasticsearch until there is evidence users need relevance ranking, faceting or scale. It also makes the upgrade trigger explicit rather than a vague "we'll revisit search."
  • MVP and discovery experiments. Because integration cost is low, it lets us test whether search quality actually moves a metric (support tickets, task completion, time-to-find) before committing budget to search infrastructure. Cheap to instrument, cheap to throw away.
  • Vendor and data-governance posture. Matching happens inside our application and database — no third-party search service, no per-query pricing, no new DPA, no external security review, no data leaving our perimeter. For regulated or procurement-heavy environments this is a real, quantifiable advantage over SaaS search.
  • Risk decisions it forces (the honest part). The package is archived with no dependable release cadence. The most recent release (2.0.20) is a Laravel 7 compatibility bump — Laravel 7 shipped in March 2020 and is itself end-of-life. That is a compatibility patch, not a maintenance revival, and it does not reset the clock. Adopting it is a decision to own a small amount of code, not a decision to outsource maintenance. A PM should treat it as a tactical dependency with a named owner and an exit plan, not as a platform bet.
  • Decisions it should not be used to support: relevance-ranked, faceted, personalized or high-QPS product search; anything where search is the product; anything requiring SLAs or vendor accountability.

When to Consider This Package

Consider it when:

  • The data set is small and bounded — roughly tens of thousands of rows, or a filtered subset queried per request, so in-PHP/DB-level scoring stays fast.
  • Search is a supporting capability, not the core value proposition (internal tools, back-office admin, small catalogs, directory lookup).
  • You are on Laravel, have no search infrastructure, and want results without standing up a service.
  • The requirement is specifically typo tolerance, partial matching and "did you mean"-style suggestions over a single model or a few models.
  • Budget matters and MIT licensing is acceptable.
  • You can isolate the dependency behind an interface so it is swappable later.

Look elsewhere when:

  • Maintenance risk is disqualifying. No upstream security patching and no forward-looking roadmap. The latest release (2.0.20) added Laravel 7 support — its effective compatibility ceiling — and Laravel 7 has been EOL since March 2021. If you are on Laravel 8 or above, assume you are testing an unsupported combination rather than adopting a supported one. If your policy forbids unmaintained dependencies, this is a hard stop regardless of fit.
  • The data set is large or query volume is high. Scoring candidate rows in PHP degrades predictably; a dedicated engine (or Postgres pg_trgm) will beat it on latency and scale.
  • You need relevance tuning, boosting, synonyms, stemming, faceting, filters, highlighting or search analytics. Searchy does not aim at this; forcing it produces a worse experience than a real engine.
  • You need sub-50ms search, SLAs, or a vendor to hold accountable. Meilisearch, Typesense, Algolia or a tuned Postgres setup are the right comparison set.
  • Multi-language or compliance-heavy search where an unmaintained dependency is a policy or audit problem.

If adopted, adopt it deliberately: pin the exact version, fork into a private repository with a named owner, wrap it behind a search interface, and write down the migration trigger — data set size, latency SLO breach, or a failing PHP/Laravel upgrade. The exit should be a config change, not a project.

How to Pitch It (Stakeholders)

Summary. Searchy is a small, free, MIT-licensed Laravel library that adds typo-tolerant, partial-match search to our application in a few hours rather than a few weeks. It runs entirely inside our own infrastructure — no third-party search service, no per-query cost, no new vendor security review. Its best use is closing one specific, well-understood gap: users failing to find records because of misspellings or partial input, in internal tools and small catalog search.

For engineering. It is a thin layer over Levenshtein and string matching, integrated with Eloquent — low integration cost and low conceptual overhead. The trade-off is ownership: the package is archived, and recent activity is limited to compatibility patches rather than ongoing support. The most recent release adds Laravel 7 support, which sets a practical ceiling well behind current framework versions, so plan to validate on our target version before committing. We take it on deliberately — pinned, forked if necessary, and hidden behind a search interface so replacing it is a contained change rather than a rewrite.

The ask. Approve it as a tactical, time-boxed dependency for [specific surface], with a named owner and a defined exit trigger (data set growth, latency breach, or a failed framework upgrade). We are not betting the search roadmap on it. We are avoiding a quarter of infrastructure work for a feature where search quality is not the differentiator. If search becomes core — relevance tuning, faceting, scale, sub-50ms latency — we revisit with a dedicated engine, and the wrapper keeps that migration to a bounded, predictable effort.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
uni-method/symfony-lib
tacticmedia/scim-server-bundle
neika-ai/symfony-bundle
mattleads/agent-publishing-bundle
glavweb/framework-bundle
glavweb/extra-bundle
glavweb/api-bundle
glavweb/admin-bundle
adachsoft/api-version-bundle
elsayed85/laravel-api-exceptions
ouhssini/laravel-demo-mode
daworks/ncloud-outbound-mailer-driver
gp247/cms
ignibyte/aic-gates
nexa-merchant/blog
novasa/laravel-language-center
opencage/geocode
adolfoholzer/parameters
livenetworks/ln-starter
shitoudev/permissionmanager