feat: add meilisearch search plugin#14
Conversation
|
E2E test remaining |
|
Community Plugins — View preview |
|
@michaelbromley — pulled this branch locally to get a feel for the scope. The plugin itself is in good shape on the keyword-search side, but the AI/hybrid-search surface is non-trivial and I'd like your call on it before we go further. Summary below; happy to take any direction. (Separately, the PR also needs a rebase — cc @Ryrahul — thanks for the very thorough work here. Not asking for changes yet; the comments below are mostly questions for the maintainers about how broad the AI surface should be in a v1 community plugin. AI/embedder surface — what's actually in the PRThe plugin exposes a configurable embedder layer that forwards to one of five sources: source: 'openAi' | 'huggingFace' | 'ollama' | 'rest' | 'userProvided'Per-embedder config (in
Two consumer-facing capabilities:
Important: we don't call OpenAI/HF/Ollama ourselves. Meilisearch is the integration point; credentials are forwarded to Meilisearch which calls the upstream provider. The plugin's job is to pass config through and shape request/response. Things to weigh
My takeThe AI bit is a thin passthrough to Meilisearch's native vector capability, not a homegrown embedding stack. Risk-wise it's defensible. What I'd want before merge:
Curious what you think on scope — keep AI in v1, split it out, or trim it down to just hybrid search and drop |
|
Hey @Ryrahul - before we proceed here, can you give me some background around your use of this plugin and the degree to which you or your company intend to maintain it? |
Yeah, I think separating the AI/vector functionality into an optional companion plugin could make sense for the initial v1. The core Meilisearch plugin already provides solid value with indexing + keyword/full-text search, while the AI side introduces a much broader surface area (embedders, provider configs, hybrid ranking, recommendations, cost/ops concerns, etc.). Keeping those concerns isolated in something like a |
Hey @michaelbromley , we do use this plugin in one of our core client projects, which is partly why I ended up investing quite a bit into extending it. I can’t really speak on behalf of the company regarding long-term ownership commitments, but personally I’m happy to continue maintaining and contributing to it going forward. Even outside of immediate project needs, I’d still be able to spare time for fixes, compatibility updates, and maintenance around the plugin itself. |
Add Meilisearch-powered search plugin as a drop-in replacement for the default search. Supports full-text search with typo tolerance, synonyms, stop words, AI hybrid search (semantic + keyword) via OpenAI/HuggingFace/ Ollama/REST embedders, faceted search, price range filtering, similar document recommendations, and custom product/variant field mappings. Also adds mock data and updated populate script for dev server testing.
- Revert dev-server config to match main, keep only commented meilisearch entries - Change output dir from dist/ to lib/ to match other plugins - Align peerDependencies and devDependencies versions - Add provenance, rimraf, typescript to match elasticsearch-plugin - Add CHANGELOG.md for initial 1.0.0 release - Register meilisearch-plugin in docs pipeline and generate docs - Update .gitignore to match repo convention
- Add comprehensive e2e test suite (51 tests) mirroring elasticsearch plugin - Fix index swap to not pass rename:false which prevented settings (embedders) from being carried over during reindex - Add graceful fallback to keyword search when AI embedder is temporarily unavailable during reindex swap window - Fix groupByProduct totalItems using facetDistribution for accurate counts - Add collectionIds/collectionSlugs (plural) filter support - Fix grouped facetValues/collections to use product-level fields with distinct - Add e2e/watch scripts to package.json
These files were added for local testing but are not needed by the plugin. The dev-server uses the punchout-gateway fixture data from main.
Remove all AI/embedder/hybrid-search/similarDocuments code to ship a clean keyword-search-only Meilisearch plugin for v1. The AI layer can be added back later as a companion plugin. Removed: - EmbedderConfig and AiSearchConfig interfaces from options - Hybrid search params injection and fallback logic from service - similarDocuments method, resolver, and GraphQL schema - AI embedder configuration from index setup - All AI-related exports, docs, and README sections
… fields - Synonyms are now automatically expanded to be bidirectional so users only need to define e.g. laptop: ['notebook'] and the reverse mapping is generated automatically. - Add formattedProductName and formattedDescription fields to SearchResult to expose Meilisearch highlight/crop data to frontends.
e586862 to
d8dfa21
Compare
Add Meilisearch-powered search plugin as a drop-in replacement for the default search. Supports full-text search with typo tolerance, synonyms, stop words, AI hybrid search (semantic + keyword) via OpenAI/HuggingFace/ Ollama/REST embedders, faceted search, price range filtering, similar document recommendations, and custom product/variant field mappings.
Also adds mock data and updated populate script for dev server testing.