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

Search Bundle Laravel Package

meilisearch/search-bundle

A Symfony bundle that integrates Meilisearch into your application, delivering fast, typo-tolerant search and autocomplete with simple configuration, automatic indexing, and customizable searchable entities.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit — the headline finding is a framework mismatch. Despite being catalogued here as a "Laravel/PHP package," meilisearch/search-bundle is a Symfony bundle (repo: meilisearch-symfony). It ships a Bundle subclass, a DI extension, autowired services (Meilisearch, Aggregator, SearchableRepository), PHP attributes for index settings, and console commands (meilisearch:import, meilisearch:create-index, meilisearch:update-settings). None of that is loadable by Laravel's service container — Laravel does not register Symfony bundles, so the integration does not "just work" in a Laravel app. The reusable asset for a Laravel team is the underlying meilisearch/meilisearch-php SDK and the concepts this bundle encodes (index settings as code, searchable/aggregator objects, index naming), not the bundle itself.

Concretely, the framework fit splits three ways:

  • Symfony 6.4/7.x service: high fit, low glue code, this is the intended target.
  • Laravel service: low fit for the bundle; use Laravel Scout + the official Meilisearch driver (laravel/scout + meilisearch/meilisearch-php) instead. Same engine, same server, idiomatic integration.
  • Framework-agnostic PHP worker/CLI: moderate fit — pull in meilisearch-php directly (PSR-18/PSR-17 based) and skip the bundle entirely.

Integration feasibility. Feasible in days, not weeks, provided the framework question is settled first. The bundle's surface area is small and declarative: you annotate or configure an index, define searchable/filterable/sortable attributes, and the bundle reconciles settings and pushes documents. The real work is not library plumbing — it is defining index settings, backfilling documents, and wiring reindex triggers. Those tasks are ~80% identical whether you land on this bundle or on Scout, so an evaluation spike on either transfers to the other.

Technical risk.

  1. Wrong-framework adoption risk (highest). If a team reads this listing as Laravel-ready, they will burn a sprint discovering they need Scout. Mitigate by making the framework constraint explicit in any internal write-up.
  2. Version-skew risk. The bundle's release cadence tracks meilisearch-php and Symfony majors; the server has its own version line. Client/server skew produces confusing 400s on settings and search params. Pin all three: Symfony minor, bundle version, meilisearch-php version, and Meilisearch server image tag.
  3. Ecosystem signal is thin. 154 stars and 0 recorded dependents is unusual for an official vendor integration and suggests the data is incomplete rather than that nobody uses it — but it does mean you cannot lean on a large public corpus of issue threads for troubleshooting. Treat the "0 dependents" figure as unverified, not as a disqualifier.
  4. Vendor abandonment risk is low. It is maintained under the Meilisearch org, MIT licensed, and last released 2026-02-10 — active. The MIT license means you retain a fork/escape hatch.
  5. Search behavior is a product surface, not an infra detail. Typo tolerance, ranking rules, and synonyms silently change user-visible results. This is a recurring product-owner commitment, not a one-time install.

Key questions to resolve before committing engineering time:

  • Which framework is actually in production for the target service — Symfony or Laravel? If both exist, which one owns the search surface?
  • Does the chosen path cover the required query features (filterable attributes, facets, sort, geo, multi-search, and — if relevant — hybrid/semantic search)?
  • Is Meilisearch self-hosted or Meilisearch Cloud? Who owns it operationally?
  • What is the current search implementation (MySQL LIKE, Algolia, Elasticsearch) and what is the acceptable relevance regression during cutover?
  • Who owns index settings, synonyms, and stop words as a standing responsibility?
  • Do we need zero-downtime reindex (blue/green index swap)? Neither path gives this for free.

Integration Approach

Stack fit. Two viable postures, and the choice should be made explicitly rather than by default:

  • Laravel: laravel/scout (queue-driven indexing) + meilisearch/meilisearch-php. Scout's searchableAs, toSearchableArray, and searchable() hooks map closely onto what the Symfony bundle's attributes express, so the design translates.
  • Symfony: this bundle, autowired, with index settings declared in config/attributes and meilisearch:* commands in the deploy pipeline.
  • Mixed estates: standardize on meilisearch-php as the shared dependency and treat the bundle as a Symfony-only convenience layer. Do not attempt to bridge the DI containers.

Migration path. Assume a phased, reversible cutover rather than a flag-day swap:

  1. Stand up Meilisearch (pinned image or Cloud project) in staging; confirm version parity with the client library.
  2. Encode index settings in version control — searchable attributes, filterable/sortable attributes, ranking rules, synonyms. Treat this as reviewed configuration, not dashboard clicks.
  3. Backfill a read-only subset of documents; measure index size against available RAM (Meilisearch holds indexes in memory/mmap — sizing is a hard gate, not a tuning detail).
  4. Build a side-by-side comparison harness: run a fixed query corpus against old and new, diff top-N results. This is the artifact that gets product sign-off.
  5. Dual-write to a shadow index in production via queue workers; monitor task success/failure.
  6. Cut over behind a feature flag with a percentage rollout; keep the old path warm for one release cycle.
  7. Decommission the legacy path and delete the shadow index.

Compatibility checks. Run composer why-not against the target Symfony/Laravel version before estimating; verify PHP version floor (8.1+ typical for current Symfony majors); confirm PSR-18 HTTP client availability in the app; confirm the Meilisearch server version supports every query parameter you plan to use (parameter support has moved between server minors).

Sequencing. Settle framework → pin versions → settings-as-code → backfill → comparison harness → dual-write → flagged cutover. Front-load the comparison harness; it is the long pole for stakeholder confidence and is frequently skipped.

Operational Impact

Maintenance. The bundle itself is low-maintenance — small footprint, active vendor releases, permissive license. The ongoing cost sits outside the library: index settings drift, synonym curation, ranking-rule tuning, and reindex orchestration when schema or toSearchableArray equivalents change. Budget a recurring slice of a backend engineer's time plus periodic product review of search quality. Every change to a searchable model implies a reindex; document that contract or it will be forgotten during a schema migration.

Support. MIT with community issue tracking; there is no commercial SLA on the bundle. If you need a supported search surface, that comes from Meilisearch Cloud, not from this package. Internal on-call needs a documented escalation path for "search is broken" — distinguish index stale from engine down from relevance bad, because the fixes and owners differ.

Scaling. Meilisearch's scaling model is the constraint to internalize early: index memory footprint scales with document count and attribute count, and read scaling typically means replicas rather than sharding. Indexing is asynchronous — every write enqueues a task, and the default failure mode is silent staleness because nobody polls the task status. Build task-status polling into the indexing pipeline from day one, with alerting on failed tasks. Watch queue-worker backlog where indexing is queued (Scout, or your own observers): a backed-up worker means users search a stale index while everything looks healthy.

Failure modes to design against:

  • Stale index after a failed write — the most likely real incident; needs task polling + alerting, and a scheduled reconciliation job.
  • Settings/schema mismatch — a settings change that invalidates existing filterable attributes returns 400s at query time; guard with a settings-apply step in deploy.
  • Client/server version skew — surfaces as opaque 400s on search params; pin and assert at boot.
  • Engine unavailability — degrade gracefully to a fallback query path rather than a 500 on the search page; writes should queue, not fail.
  • Memory exhaustion on large indexes — a hard capacity ceiling; size before launch, not after.
  • Relevance regression on cutover — caught only by the comparison harness; without it, this surfaces as a support-ticket wave post-launch.

Ramp-up. A mid-level PHP engineer can be productive in roughly one sprint on the happy path (index a model, query it, run the console commands) in the matching framework. Add a second sprint for production concerns: queue-driven indexing, task monitoring, reindex runbook, and the comparison harness. Relevance tuning is not a ramp-up item — it is ongoing product work with no natural end state. Given the middling opportunity score (48.77) and thin ecosystem signal, the recommendation is to proceed, but only after the framework question is answered: on Laravel, use Scout and treat this package as reference material; on Symfony, adopt the bundle directly.

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.
socialdept/atp-orm
cboxdk/laravel-assistant-client
socialdept/atp-resolver
socialdept/tenant-domains
tautvydasr/blade-class-names
socialdept/color-scales
maherelgamil/controller
coleus/widgets
coleus/table
coleus/users
coleus/music
coleus/health
coleus/calendar
coleus/notes
coleus/support
coleus/settings
coleus/apps
seampact/laravel
emmyconceptng/laravel-ng-postcode
jjsquady/round-robin