amphibee/meiliscout
MeiliScout is a Laravel Scout driver that connects Eloquent models to Meilisearch for fast, typo-tolerant full-text search. It supports indexing, filtering, sorting, pagination, and familiar Scout APIs, making it easy to add powerful search with minimal configuration.
Architecture fit
meiliscout_register_suggest() / meiliscout_suggest() global functions, wp meiliscout check-suggest (WP-CLI), a "MeiliScout › Suggestions" admin screen, a Gutenberg "Search with suggestions" block with a Suggestions setting on the core Search block, theme parts and Twig templates, meiliscout/post/thumbnail_size filter naming, posts/taxonomies indexes, and featured images. The prior evaluation assumed a Scout engine registered at the scout.driver seam; that assumption is falsified. There is no evidence of a Scout engine contract, service provider, or composer-installable Laravel integration./meiliscout/v1/, block registration, browser client, WP-CLI. None of that is addressable from a Laravel application, and none of it is valuable if you strip the WordPress half.Integration feasibility
thumbnail: {url, width, height, alt} or null), field names, filterable/sortable attributes, ranking rules, and index naming. Our query parity would then track an external team's release cadence.GET /meiliscout/v1/suggest/{id}/token and GET /meiliscout/v1/suggest/{id}/search are WordPress REST routes. Anything that fronts or proxies a WP instance — including a Laravel BFF — now inherits them and their auth/rate-limit posture.Technical risk
SuggestTemplate class, js:<name>), a server-side fallback transport, a diagnostics screen and a CLI check. That is a large surface behind a single agency.js:<name> is fine when declared in code by an administrator. If any template value is stored in an option editable by a lower role, it is stored XSS. This needs an explicit answer, not an assumption.posts index schema 6 is additive, queries keep reading a schema-5 index, degradation is graceful (no images in suggestions), and wp meiliscout status reports the need for a full indexation. That is better release engineering than the prior assessment had evidence for. The trade-off: every schema bump is a scheduled reindex operation.Key questions
/meiliscout/v1/suggest/{id}/token authenticated, nonce-protected and rate-limited? What is the tenant-token TTL and scope?template values stored, and which capability is required to edit them? (Stored-XSS boundary.)meilisearch/meilisearch-php SDK at an explicit version, and what is the tested matrix across WordPress, PHP and Meilisearch server?rest transport opt-in, and what governs its request volume — it puts one PHP request behind every debounced keystroke?Stack fit
SearchEngine interface in Laravel — but justify it now as decoupling from a third-party-owned index schema, not as driver-swap insurance.Migration path
composer.json versus plugin headers. This closes or continues the work.thumbnail nullability, filterable/sortable attributes and ranking rules against what Laravel consumers expect.wp meiliscout status, who triggers full indexation, and what the customer-visible window is — queries keep serving schema 5 with degraded (image-less) suggestions rather than failing.Compatibility
connect-src allowance. If policy forbids that, we are on the rest transport and its PHP cost.Sequencing
Maintenance
Support
wp meiliscout check-suggest, a status field reporting schema drift, per-field validation that surfaces "every error given," and a screen showing groups, public URL and key with a replacement path. On-call has real affordances now.Scaling
rest transport moves every debounced keystroke to PHP. On WordPress that is an uncached PHP worker per request — it is the first thing to fail under suggestion traffic. Require the browser-direct path wherever Meilisearch is publicly reachable.Failure modes
thumbnail vanishes silently. Contract tests are the only detector.template if the trust boundary is admin-only in name but editable by lower roles.Ramp-up
Recommendation: the prior recommendation stands and is strengthened — default to Scout's first-party Meilisearch driver, and treat MeiliScout 2.5.0 as not addressable from Laravel. Close the adoption evaluation. If a WordPress estate exists and shares a Meilisearch cluster, re-open as a narrow index-consumer evaluation pinned to schema 6, gated on a document-shape contract test and an auth review of /meiliscout/v1/suggest/{id}/token; in that case prefer the browser-direct path over the rest transport.
How can I help you explore Laravel packages today?