M
Meilisearch
🔍 Powerful, lightning-fast search integration for MedusaJS using Meilisearch
MedusaJS Meilisearch Integration
🔍 Powerful, lightning-fast search integration for MedusaJS using Meilisearch
🌟 Features
- Instant, typo-tolerant search capabilities
- Highly configurable indexing
- Real-time search updates
- Advanced filtering and ranking
- Seamless MedusaJS integration
🏗️ Search Architecture
graph TDA[MedusaJS Database] -->|Indexing| B[Meilisearch]B -->|Instant Search| C[Client Application]subgraph Search ConfigurationConfig[Meilisearch Config]Indexes[Multiple Index Settings]Filters[Advanced Filtering]end
📦 Installation
Install the package using npm:
npm install @vymalo/medusa-meilisearch
Or using yarn:
yarn add @vymalo/medusa-meilisearch
🚀 Configuration Types
Core Configuration Interface
interface MeilisearchAddOnOptions {// Meilisearch client configurationconfig: Config; // Meilisearch connection settings// Index-specific settingssettings?: {[key: string]: SearchTypes.IndexSettings;};}
Search Options
interface IndexSettings {// Provider-specific index configurationindexSettings: Record<string, unknown>;// Primary key for unique document identificationprimaryKey?: string;// Optional document transformertransformer?: (document: any) => any;}
Configuration Breakdown
-
indexSettings: Allows provider-specific configuration
- e.g., ,
- Completely flexible key-value configuration
-
primaryKey:
- Ensures unique documents in the index
- Helps Meilisearch identify and manage documents
- Recommended for data integrity
-
transformer:
- Modify documents before indexing
- Allows data cleaning, restructuring
- Useful for complex data transformations
🚀 Usage Example
modules: [{resolve: '@vymalo/medusa-meilisearch',options: {// Meilisearch connection configurationconfig: {host: process.env.MEILISEARCH_HOST,apiKey: process.env.MEILISEARCH_API_KEY,},// Index-specific settingssettings: {products: {// Meilisearch-specific index settingsindexSettings: {searchableAttributes: ['title', 'description'],displayedAttributes: ['id', 'title', 'price'],filterableAttributes: ['category', 'price']},// Specify primary keyprimaryKey: 'id',// Transform documents before indexingtransformer: (product) => ({...product,// Add custom transformationssearchText: `${product.title} ${product.description}`,// Normalize or clean dataprice: Number(product.price).toFixed(2)})}}},},]
🛡️ Key Capabilities
- Flexible index configuration
- Dynamic search filtering
- Pagination support
- Custom ranking and relevance
- Multi-index management
🌐 Environment Variables
Required:
- : Meilisearch server URL
- : Meilisearch admin API key
🚀 Performance Tips
- Use appropriate index settings
- Leverage filtering and faceting
- Implement pagination
- Monitor index size and query performance
- Handle potential null/undefined values
🤝 Contributing
Contributions welcome!
- Improve transformation logic
- Optimize indexing performance
- Share search configuration patterns