Meilisearch Engine
v2.2.3
Meilisearch Engine
- Updates and support included for 12 months
- License key delivered immediately by email
- 30-day money-back guarantee
- Full documentation included
- Compatible with Hyvä themes
- Composer-ready installation
Meilisearch Engine
Vervang MySQL of OpenSearch in Magento door Meilisearch — en krijg een zoekmachine die snel is, typo-tolerant, meertalig, en draait op een kleine VPS. Deze module is een production-grade adapter bovenop de open-source Walkwizus Meilisearch base: hij plugt Meilisearch in op de native AdapterInterface van Magento en voegt vervolgens de operationele laag toe die het op schaal bruikbaar maakt — multi-level cache, partial sync, index-bescherming met auto-backup, smart pagination, klantengroep-prijzen, configureerbare ranking rules en een verzorgde Hyvä-vriendelijke autocomplete.
Zoekresultaten worden op drie niveaus gecachet (browser localStorage, Magento backend cache gedeeld tussen gebruikers, en een aparte category-page cache), zodat herhaalde queries Meilisearch nooit twee keer raken. Een custom search proxy controller routeert autocomplete via Magento, wat betekent dat de backend cache écht gedeeld wordt tussen alle bezoekers in plaats van overgeslagen door directe JS-aanroepen. Achter de schermen wordt een door ERP gedreven full sync een partial sync: alleen gewijzigde velden (qty, price, status) worden gepusht, met MD5 hash-gebaseerde change detection.
Voor wie
- Handelaars die de traagheid van Elasticsearch/OpenSearch en de JVM-geheugenrekening beu zijn
- Stores met grote catalogi (10k–500k SKU's) waar typo-tolerantie en instant autocomplete belangrijker zijn dan complexe DSL-queries
- Meertalige stores (EN, FR, NL, ES meegeleverd) die out-of-the-box vertaalde facet-labels nodig hebben
- Stores gedreven door een ERP die 10–50× per dag importeert, waar volledige Elasticsearch-reindex overkill is
- Teams die fijnmazige controle willen over ranking rules, searchable/filterable/sortable attributes en document content
Belangrijkste voordelen
- Volledige Magento search adapter — drop-in vervanger van Elasticsearch via de native
AdapterInterface. Compatibel met categoriepagina's, layered navigation, autocomplete en zoekresultaten. - Verrijkte autocomplete — 6-product grid met afbeelding, naam, SKU, klantengroep-prijs, werkende Add-to-Cart-knop (AJAX), auto-success message. Min characters en debounce configureerbaar.
- Partiële SKU-zoekopdracht — auto-gegenereerd
sku_parts-veld vindt een product op333-2-17zelfs als de volledige SKU0010333-2-17is. Twee trim-strategieën vooraf berekend bij indexering. - Multi-level cache — localStorage (browser, TTL 15 min), Magento backend cache gedeeld tussen gebruikers (TTL 2 u), en category-page cache (TTL 30 min). Handmatige flush vanuit de admin.
- Partial sync — alleen gewijzigde velden (qty, price, status…) gepusht naar Meilisearch bij ERP-imports. MD5-hash-detectie slaat ongewijzigde producten over. Batches van 10.000 standaard.
- Index-bescherming & auto-backup — settings worden vóór elke
cleanIndexgebackupt en daarna auto-hersteld, met validatie. Laatste 10 backups bewaard ondervar/meilisearch_backups/. Health-check CLI. - Smart pagination — ellipsis-stijl paginering, jump-to-page dropdown bij grote resultaatsets, item-counter, responsive mobile filter popup.
- Klantengroep-prijzen —
price_0,price_1,price_2… per klantengroep geïndexeerd; de frontend kiest de juiste. Compatibel met faceted search en prijssortering. TVAC één keer opgeslagen, geen dubbele btw. - Custom ranking rules — definieer uw eigen ranking-sequentie (
words,typo,proximity,attribute,sort,exactness, pluspopularity:desc,created_at:descenz.) vanuit de admin. - Index-drop alerts — krijg een e-mail wanneer een index verwijderd wordt, met volledige operation logging.
Compatibiliteit
- Magento 2.4.x / Mage-OS equivalent
- PHP 8.1, 8.2, 8.3
- Vereist
wimakeit/module-core3.0.9,walkwizus/magento2-module-meilisearch1.0.46,meilisearch/meilisearch-php - Werkt met Hyvä-, Breeze- en Luma-frontends
- Meilisearch-server 1.6+ vereist (elke tier — officiële Docker-image aanbevolen)
- Compatibel met MSI (multi-source inventory) en standaard single-source setups
- Companion modules:
wimakeit/module-meilisearch-aivoor semantic search,wimakeit/module-indexervoor catalog reindex-optimalisatie
Installeer deze module via Composer. Zorg ervoor dat uw auth.json is geconfigureerd met uw Wimakeit-inloggegevens.
$ composer require wimakeit/module-meilisearch-engine:^2.2.3
$ bin/magento setup:upgrade
$ bin/magento setup:di:compile
Installation notes
The standard composer require + setup:upgrade + setup:di:compile flow applies. The points below cover what's specific to this module.
Required dependencies
| Package | Version |
|---|---|
wimakeit/module-core | 3.0.9+ |
walkwizus/magento2-module-meilisearch | 1.0.70+ |
meilisearch/meilisearch-php | 2.0.0-beta.6+ |
The Meilisearch PHP SDK v2 is still a pre-release, so Composer will refuse to resolve it under the default stability. Allow it for that package only:
composer require meilisearch/meilisearch-php:^2.0.0-beta.6@beta
Composer will pull the rest automatically from the Wimakeit registry. The Walkwizus base modules (MeilisearchBase, MeilisearchCatalog, MeilisearchFrontend, MeilisearchIndices, MeilisearchMerchandising) should also be installed:
composer require walkwizus/module-meilisearch-base \
walkwizus/module-meilisearch-catalog \
walkwizus/module-meilisearch-frontend \
walkwizus/module-meilisearch-indices \
walkwizus/module-meilisearch-merchandising
External services
This module requires a Meilisearch server (1.6+).
Run Meilisearch (Docker)
docker run -d --name meilisearch \
-p 7700:7700 \
-e MEILI_MASTER_KEY='YOUR_MASTER_KEY' \
-v $(pwd)/meili_data:/meili_data \
getmeili/meilisearch:latest
Dashboard: http://localhost:7700. For production, put it behind HTTPS and firewall the master-key port.
Connection settings
Configure the server in Stores → Configuration → Wimakeit → Meilisearch Engine → Server Connection (encrypted):
| Setting | Default |
|---|---|
| Server Address | (empty — e.g. http://localhost:7700 or https://meilisearch.example.com) |
| API Key | (empty — read-only search key, stored encrypted) |
| Master Key | (empty — admin key for settings/indexes, stored encrypted; falls back to API Key) |
Then point Magento at Meilisearch in Stores → Configuration → Catalog → Catalog → Catalog Search:
| Field | Value |
|---|---|
| Search Engine | Meilisearch |
| Index Prefix | magento_ (or your own) |
MSI modules
Inventory modules must be enabled for stock filtering to work:
bin/magento module:enable Magento_Inventory Magento_InventoryApi \
Magento_InventorySales Magento_InventorySalesApi \
Magento_InventoryIndexer Magento_InventoryCatalog \
Magento_InventoryCatalogApi Magento_InventoryConfiguration \
Magento_InventoryConfigurationApi Magento_InventorySourceSelectionApi
ACL permissions
| Resource | Default |
|---|---|
Wimakeit_MeilisearchEngine::config (edit module configuration) | granted to Administrator role only |
Configuration
Stores → Configuration → Wimakeit → Meilisearch Engine
General
| Setting | Default |
|---|---|
| Enable Debug Logging | No — leave off in production |
Search settings
| Setting | Default |
|---|---|
| Maximum Results | 10000 |
| Autocomplete Results Limit | 6 |
Autocomplete behavior
| Setting | Default |
|---|---|
| Minimum Characters | 3 |
| Debounce Delay (ms) | 500 |
Search cache
| Setting | Default |
|---|---|
| Enable Frontend Cache (localStorage) | Yes |
| Frontend Cache TTL (seconds) | 900 (15 min) |
| Max Cached Queries (localStorage) | 150 |
| Enable Backend Cache (Magento cache) | Yes |
| Backend Cache TTL (seconds) | 7200 (2 h) |
| Use Search Proxy | Yes — routes autocomplete through Magento so backend cache is shared |
| Enable Category Page Cache | Yes |
| Category Cache TTL (seconds) | 1800 (30 min) |
| Flush Cache | Manual button in admin |
Document content
| Setting | Default |
|---|---|
| Include Description | Yes |
| Description Max Length | 150 (set 0 for no truncation) |
Layered navigation
| Setting | Default |
|---|---|
| Enable Stock Availability Filter | No |
Custom ranking rules
| Setting | Default |
|---|---|
| Rules | words, typo, proximity, attribute, sort, exactness (one per line; add popularity:desc, created_at:desc, etc.) |
| Reset Ranking Rules | Button — restore defaults |
Index drop alerts
| Setting | Default |
|---|---|
| Enable Email Alerts | No |
| Notification Emails | (empty — comma-separated list) |
Embedders (AI Search)
| Setting | Default |
|---|---|
| Embedders Configuration (JSON) | (empty — managed by wimakeit/module-meilisearch-ai if installed) |
Partial sync
| Setting | Default |
|---|---|
| Enabled | Yes |
| Sync Fields | qty, price, prixHT, status, codeDispo |
| Batch Size | 10000 |
Debug
| Setting | Default |
|---|---|
| Throw Exceptions on Search Error | No — development only |
CLI commands
# Server and indexes status
bin/magento wimakeit:meilisearch:status
# Push admin settings to Meilisearch
bin/magento wimakeit:meilisearch:sync-settings
# Health check + manage backups
bin/magento wimakeit:meilisearch:health
bin/magento wimakeit:meilisearch:health --backup
bin/magento wimakeit:meilisearch:health --list-backups
bin/magento wimakeit:meilisearch:health --restore=var/meilisearch_backups/backup_XXXXXXXX.json
# Clean succeeded/canceled tasks
bin/magento wimakeit:meilisearch:clean-tasks
# Reindex a specific Meilisearch index by UID
bin/magento wimakeit:meilisearch:reindex <index_uid>
bin/magento wimakeit:meilisearch:reindex <index_uid> --clear
# Reindex specific products by SKU
bin/magento wimakeit:meilisearch:reindex-skus SKU1,SKU2,SKU3
# Inspect partial-sync state
bin/magento wimakeit:meilisearch:sync-state
bin/magento wimakeit:meilisearch:sync-state --clear
Cron jobs (registered automatically)
| Job | Schedule |
|---|---|
wimakeit_meilisearch_process_reindex_queue (process the per-product reindex queue) | every minute |
wimakeit_meilisearch_clean_tasks (purge succeeded/canceled Meilisearch tasks) | daily at 2 AM |
No setup needed — just make sure Magento cron is running.
Initial reindex
After install, reindex in this order:
bin/magento indexer:reindex catalog_category_product
bin/magento indexer:reindex catalog_product_category
bin/magento indexer:reindex meilisearch_categories_fulltext
bin/magento indexer:reindex catalogsearch_fulltext
bin/magento wimakeit:meilisearch:sync-settings
If you also installed wimakeit/module-indexer, you can replace the first four lines with bin/magento wimakeit:indexer:reindex-all.
- Versie
- v2.2.3
- Licentie
- Jaarabonnement
- Ondersteuning
- 12 maanden
- Last updated
- 1 sep. 2026
- Magento
- Magento 2.4.4 Magento 2.4.5 Magento 2.4.6 Magento 2.4.7 Mage-OS 2.0 Mage-OS 2.1
- PHP
- PHP 8.1 PHP 8.2 PHP 8.3
- Hyvä
- Compatibel
- Pakket
-
wimakeit/module-meilisearch-engine
Compatibility checker
Pick your stack to see if this module fits.
Compatibiliteit 4
Prijs & licentie 4
composer require in vendor/wimakeit/ terecht; u kan ze lezen, auditen en lokaal patchen voor uw eigen Magento-installatie. U mag de code NIET herverspreiden, sublicentiëren, op een publiek Composer-register publiceren of doorverkopen. Eén licentie = één productiedomein + één staging/dev-domein (zie de algemene voorwaarden voor de volledige EULA). Wimakeit-modules staan NIET op het publieke packagist.org — ze worden uitsluitend verspreid via het private Composer-register packages.wimakeit.be. Installatie & updates 6
composer require wimakeit/module-meilisearch-engine:^1.12.2 uit, daarna bin/magento setup:upgrade, bin/magento setup:di:compile en tot slot bin/magento cache:flush. Het tabblad Installation op deze pagina lijst elke configuratiestap (ACL's, crons, defaultwaarden) — een deploy duurt minuten, geen uren. Hulp nodig? Wimakeit biedt Magento-installatiediensten vanuit ons Waalse kantoor (Presles, tussen Charleroi en Namen). auth.json toe: {"http-basic": {"packages.wimakeit.be": {"username": "UW-E-MAIL", "password": "UW-TOKEN"}}}. Stap 3: registreer het repo: composer config repositories.wimakeit composer https://packages.wimakeit.be. Stap 4: composer require wimakeit/module-meilisearch-engine:^1.12.2. In CI/CD-pipelines injecteert u COMPOSER_AUTH als JSON-environment-variabele in plaats van auth.json te commit'en. composer require, zelfde modulecode, zelfde databaseschema — geen fork om te onderhouden, geen licentiewijziging. composer update blijft veilig binnen een major. app/design/frontend/{UwVendor}/{theme}/Wimakeit_{Module}/templates/ met hetzelfde relatieve pad. Blocks, ViewModels en Helpers worden overschreven via DI-preference in uw eigen custom module — declareer <preference for="Wimakeit\…\OriginalClass" type="UwVendor\Override\Class" /> in etc/di.xml. Layout-XML wordt uitgebreid (voorkeur) of overschreven op de standaard Magento-manier. Wimakeit-modules gebruiken nooit het keyword final op klassen die u redelijkerwijs zou willen override — overschrijven is een first-class scenario, geen hack. Support & beveiliging 3
contact@wimakeit.com met modulenaam, versie, Magento/Mage-OS-versie en reproduceringsstappen. Fixes verschijnen in de volgende patch. Wimakeit-support antwoordt in het Nederlands, Frans en Engels op werkdagen (CET-uren). contact@wimakeit.com met het voorvoegsel [SECURITY] in het onderwerp — vermeld de module, versie en reproductiestappen. Bevestiging op werkdagen, vermelding in het Changelog op verzoek. Wimakeit is een Belgische BV (besloten vennootschap) onderworpen aan Belgisch en Europees recht inzake privacy en responsible disclosure. Over Wimakeit 1
Iets gevonden dat niet in de FAQ staat?
Meld een bug of stel een vraag — het formulier is voor-ingevuld met deze module.
Changelog
Categories: Security, Feature, Fix, Perf, Admin, Deps.
[2.2.1] - 2026-08-10
Fix
- Category pages no longer all return the same products: cached listings are keyed per category, filter set and customer group.
- Layered navigation filters and product ranking now survive a cache hit instead of coming back empty.
- Cached results are cleared when the catalog is reindexed, a product changes or a category is saved — no more stale listings until the cache expires.
- Products are no longer left behind in the index when a deletion and an update overlap.
Perf
- Full page cache restored across the whole storefront: a search block was disabling it on every frontend page, not just on search and category pages.
- Search no longer writes a log line per request, which filled log files on busy catalogs.
[2.1.2] - 2026-08-07
Deps
- PHP 8.5 certified — constraint widened to
>=8.1 <8.6.
[2.1.1] - 2026-07-09
Fix
- Installation no longer fails during
setup:di:compile: three catalog attribute mappers still carried an outdated signature.
[2.1.0] - 2026-07-08
Feature
- Layered navigation now works with Meilisearch: every "filterable in navigation" dropdown attribute is indexed so its facet returns the matching products.
[2.0.0] - 2026-07-07
Feature
- Compatible with Magento / Mage-OS 2.4.9 through walkwizus 1.0.70 and the Meilisearch PHP v2 SDK.
Fix
- Indexing writes documents again: a full reindex used to report success while pushing nothing to Meilisearch.
- Category and search pages return products again instead of coming back empty.
- Price-per-customer-group and category indexing overrides apply again after the upstream code was relocated.
Deps
- Requires
walkwizus/magento2-module-meilisearch^1.0.70andmeilisearch/meilisearch-php^2.0.0-beta.6. The Meilisearch SDK v2 is still pre-release, so the consuming project must allow its beta stability.
[1.12.8] - 2026-06-30
Fix
- Category pages always show their products: when a category's position sort is missing from the search index, the proxy automatically retries without it instead of returning an empty page.
[1.12.7] - 2026-06-29
Fix
- Accents now display correctly in autocomplete and search results: the search proxy decodes leftover HTML entities (such as
éfor é) in indexed text — no reindex needed.
[1.12.6] - 2026-06-24
Fix
- Products kept available by a manual stock override or a backorder are no longer indexed as out of stock.
[1.12.5] - 2026-06-05
Deps
- PHP 8.4 deprecation cleanup — explicit-nullable params across constructors. No behavior change.
[1.12.4] - 2026-06-05
Deps
- Marketing documentation refreshed to list PHP 8.4 in the supported PHP range.
[1.12.3] - 2026-06-05
Deps
- PHP 8.4 certified — constraint widened to
>=8.1 <8.5.
[1.12.2] - 2026-05-28
Fix
- Adapter no longer crashes when Meilisearch returns a facet that isn't marked as filterable — it falls back to a safe empty result instead of throwing.
[1.12.1] - 2026-05-28
Fix
- Autocomplete prices respect customer VAT settings again.
calculateDisplayPricereapplies the tax-inclusive / tax-exclusive rule per customer, so the price shown in the autocomplete matches the cart and product page.
[1.12.0] - 2026-05-28
Fix
- Bundle product prices in autocomplete and search now match the storefront. The price mapper computes the rendered bundle price (option selections + price view) instead of only the base price.
[1.11.0] - 2026-05-28
Fix
- Bundle products whose description is stored as an array no longer cause "Array to string conversion" warnings during reindex — the description truncate helper handles both shapes.
[1.10.34] - 2026-05-27
Feature
- Autocomplete now exposes
hasSearchedTerm,noResultsandshowAutocompleteKnockout observables, so themes can render a real "no results" state and keep the autocomplete container visible while loading.
[1.10.33] - 2026-05-12
Admin
- Admin dashboard widget code extracted to companion module
wimakeit/module-meilisearch-engine-admin-dashboard. The main module is now installable on stores that don't usewimakeit/module-admin-dashboard.
Deps
- To keep the Meilisearch indexer/health widget on the admin dashboard, install
wimakeit/module-meilisearch-engine-admin-dashboardalongside this module.
[1.10.32] - 2026-05-11
Feature
wmi_stock_statusis now part of the partial-sync field map — stock status changes propagate to Meilisearch incrementally instead of waiting for a full reindex.
[1.10.31] - 2026-05-10
Feature
- New Enable Debug Logging toggle (Stores → Configuration → Wimakeit → Meilisearch Engine → General), off by default. 9 hot paths (reindex queue cron, task cleanup, cache observer, multisearch controller, searchable updater, search cache, sync state, search adapter, partial sync) emit
info/debug/notice/warningonly when the toggle is on;error/criticalalways log.
Perf
- Production stores stop emitting tens of thousands of trace lines per day in
var/log/system.logonce the toggle is left off.
Deps
- Requires
wimakeit/module-core3.0.9+ for the shared debug logger virtual type.
[1.10.30] - 2026-05-08
Admin
- Admin menu group standardized — module appears under a top-level Wimakeit_MeilisearchEngine entry with a Settings child that opens directly on the configuration section.
- Config section path renamed from
wimakeit_meilisearchtowimakeit_meilisearch_enginefor consistency with the other Wimakeit modules. A data patch migrates existingcore_config_datarows automatically onsetup:upgrade— no manual reconfiguration needed.
[1.10.29] - 2026-04-29
Deps
- Certified PHP 8.1 → 8.3 support. Composer
phpconstraint tightened to>=8.1 <8.4. - Fixed implicit-nullable parameter declarations flagged by PHP 8.4-rc deprecation notices.
[1.10.28] - 2026-04-23
Fix
- Category listings on stores with HT catalog prices (
tax/calculation/price_includes_tax=0) now apply VAT correctly.Block\CustomerGroup::isPriceIncludingTax()returns the realTax\Model\Config::priceIncludesTax()instead of a hard-codedtrue, so both TTC and Anowave TaxSwitch HT toggles render correct prices on autocomplete and live-search. - New
ViewModel\Ssrpreference applies the same tax rule server-side so SSR HTML of category and search listings matches the client-side rendering. Index stays raw (no risk of double-taxation elsewhere).
[1.10.27] - 2026-04-23
Fix
- Reverted 1.10.26 (VAT applied at index time). That approach would have caused double-taxation on autocomplete and live-search paths, which apply VAT client-side. Prices are back to being indexed HT when the catalog is configured as HT — VAT is applied in the theme override instead.
[1.10.22] - 2026-04-16
Fix
- Empty product grids on pages with a price facet (e.g.
/fr/nos-libraires/<name>) fixed.IndexSettingsUpdaternow registersprice_<groupId>for every customer group as both filterable and sortable, so Meilisearch accepts the facet query the adapter builds.
[1.10.16] - 2026-03-19
Fix
- Category page filters, sorting and pagination work again. The
isSsrMode()check insearch.jswas disabling JS subscriptions on SSR-rendered category pages — now SSR initial state is used for first render only, while JS handles dynamic user interactions. - Loading spinner no longer stays stuck on SSR pages (added
searchState.isLoading(false)after init). - Autocomplete
hitsPerPagenow respectscatalog/frontend/grid_per_pageinstead of a hard-coded fallback.
[1.8.7] - 2026-02-24
Feature
- Progress bar support during Meilisearch sync — new
progressCallbackparameter onsyncBatch()andsyncFromCsv()for real-time CLI feedback.
Fix
- SKU values are now consistently handled as strings throughout
SyncStateManagerandPartialSyncServiceto prevent PHP type errors. getIndexName()correctly resolved (was incorrectly callingresolve()).
[1.8.6] - 2026-02-24
Fix
- Added string casting on SKU in
SyncStateManageriteration loops (preloadHashes,updateHashBatch,getChangedSkus,deleteHashes). - Added string casting on SKU in
PartialSyncService::syncBatch().
[1.8.5] - 2026-02-24
Fix
- Index name resolver: switched from
resolve()togetIndexName()for compatibility with Walkwizus MeilisearchBase.
[1.8.4] - 2026-02-24
Fix
SyncStateManager::hasChanged(),getStoredHash(),updateHash()now acceptstring|intfor the SKU parameter with internal string casting.
[1.8.3] - 2026-02-24
Fix
PartialSyncService::buildPartialDocument()acceptsint|stringfor entityId (matches whatfetchPairsreturns).
[1.8.2] - 2026-02-24
Fix
- Replaced non-existent
ClientManagerwithConnectionManagerfrom Walkwizus MeilisearchBase.
[1.8.0] - 2026-02-23
Feature
- Partial Sync Service: send only changed fields (stock, price, status) to Meilisearch instead of full documents. Drastically reduces indexing load on ERP-driven imports.
SyncStateManagerperforms hash-based change detection to skip unchanged products.- New
PartialSyncConfigadmin section.
Admin
- Sync now uses partial updates for stock/price changes; full reindex only when needed.
[1.6.4] - 2026-02-23
Fix
- Search proxy UTF-8 error fixed via
sanitizeUtf8()to handle malformed characters in Meilisearch responses (prevents JSON serialization errors). - Search proxy
SearchQueryconversion fixed ("Call to a member function toArray() on array") by converting frontend JSON arrays to properMeilisearch\Contracts\SearchQueryobjects. - Double tax on prices fixed (e.g. 20.05 → 21.25). Meilisearch stores TVAC, so
priceIncludesTaxnow always returnstruein CustomerGroup block.
Admin
- Simplified
calculateDisplayPrice()in product.js — prices are passed through (Meilisearch already stores TVAC).
[1.6.3] - 2026-02-19
Feature
- Meilisearch Search Proxy — new controller
/meilisearch/search/multisearchroutes autocomplete searches through Magento, so the backend cache is truly shared across all users/browsers. Configurable via Admin → Search Cache → "Use Search Proxy" (on by default). Falls back to direct Meilisearch if the proxy fails.
Admin
- Autocomplete JS now calls the Magento proxy by default; direct Meilisearch call remains the fallback.
[1.6.2] - 2026-02-19
Fix
- Backend cache now shared across users/browsers.
SearchCacheServicewas using a genericCacheInterfaceinstead of the dedicatedmeilisearch_searchcache type — switched toFrontendPoolso the cache type is honored. Respectsbin/magento cache:enable meilisearch_search.
[1.6.1] - 2026-02-19
Feature
- Multi-level cache system with configurable TTL. Frontend localStorage cache (default 5 min, max 100 queries) for autocomplete; backend Magento cache (default 15 min) shared across users; native Magento cache type
meilisearch_searchso the standard cache management UI and CLI work. - New admin Autocomplete Behavior group: Minimum Characters (default 3) and Debounce delay (default 500 ms).
- New Debug section with "Throw On Error" — surfaces search errors to users instead of silent empty results (development only).
- New admin button to manually flush the Meilisearch backend cache.
Security
- API key validation in
RetryableApiClientrejects placeholder values (CHANGE_ME,YOUR_API_KEY, etc.). - Search errors no longer expose stack traces by default.
Perf
- Optimized task polling with exponential backoff (250 ms initial, 3 s max).
Model\Confighas a bounded in-memory cache (MAX_CACHE_SIZE 100) for parsed config values.DescriptionTruncatePlugin::truncateHtml()rewritten with early exits and fewer string operations.
Fix
- Unbounded memory leak in
Observer\ReindexProductAfterSave(static$processedProductIdsnow capped at 1000). - ObjectManager anti-pattern in
SearchAdapter\ResponseFactoryreplaced with proper factory injection. - N+1 queries in
Cron\ProcessReindexQueuereplaced with batch product preload and attribute caching. - Reflection in
SafeIndexerPluginandSaveIndexValidatorPluginreplaced with injectedSearchIndexNameResolver. - Silent search failures in
SearchAdapter\Adapterget user-facing error messages (gated by debug mode).
[1.4.7] - 2026-02-06
Feature
- New Document Content admin group: toggle Include Description on/off and set Description Max Length (default 150 chars). Truncates at word boundary, strips HTML, normalizes whitespace.
DescriptionTruncatePluginonAttributeMapper::map()removes or truncates description/short_description depending on config.
Fix
- Synced
system.xmlwith upstream — restored the missingautocomplete_limitfield andlayered_navigationgroup.
Perf
- Index size optimization: descriptions can be excluded entirely or trimmed to reduce Meilisearch index footprint.
[1.3.14] - 2026-01-20
Deps
- Composer patch for Walkwizus
SettingsManagerto fix return-type compatibility withmeilisearch-php1.16.x (reverts return types toarray).
[1.3.11] - 2026-01-19
Fix
SkipWalkwizusIndexerPluginreturn type fixed fromvoidtoIndexerInterface(resolves "Return value must be of type IndexerInterface, null returned" duringcatalogsearch_fulltextreindex).- Plugin re-added to
di.xml(was missing from source module).
[1.3.6] - 2026-01-09
Fix
SafeIndexerPluginreflection error resolved by reading the property fromBaseIndexerHandlerinstead of the interceptor (was failing during reindex with "Property searchIndexNameResolver does not exist").
[1.3.5] - 2026-01-08
Fix
.block.filter .filter-contentmax-width 100% on mobile.
[1.3.4] - 2026-01-08
Fix
- Mobile filter button visibility (
display: flex !important). - Z-index hierarchy fixed: button (900), overlay (999), popup (1000).
.filter-optionpadding set to 5px.- noUiSlider handle positioning fixed (top: -3px, 20 px size).
- Desktop hide rule loosened so the mobile override applies properly.
[1.3.3] - 2026-01-08
Feature
- Mobile Filter Popup: floating "Filters" button fixed to the bottom of the screen, badge counter for active filters, slide-in popup from the right (85% width, max 340 px), dark overlay with click-to-close and Escape-key support, sticky footer with "Apply Filters" button, iOS scroll lock with position restoration.
- Override of Walkwizus
facets.htmltemplate with full mobile popup structure.
Admin
- Refactored layer-navigation styles: clear desktop/mobile separation, CSS custom property
--header-height, transform/visibility for smooth animations.
[1.3.1] - 2026-01-08
Feature
- Smart pagination JS: ellipsis-style page numbers as a Knockout.js override of the Walkwizus pagination component.
- Full styles for layered navigation (checkbox, swatch, price slider).
Fix
- Pagination was rendering every page number instead of using ellipsis.
[1.3.0] - 2026-01-08
Feature
- New
IndexHealthMonitorservice to detect missing attributes. - New
SettingsBackupServicefor automatic backup/restore of index settings (stored invar/meilisearch_backups/). - New
IndexSettingsValidatorto verify settings were actually saved on Meilisearch. - New
RetryableApiClientHTTP client with exponential backoff and retry. - New
SaveIndexValidatorPluginvalidates index health after everysaveIndexto catch silent failures. - New CLI Health Check command (
wimakeit:meilisearch:health): check health, create backups (--backup), list backups (--list-backups), restore (--restore=…). - Configurable Maximum Results admin setting (was hard-coded to 10 000).
- Smart pagination with ellipsis, jump-to-page dropdown for >10 pages, item-count display, responsive design.
- Translation files for
en_US,fr_FR,nl_NL,es_EScovering all UI strings.
Security
escapeFilterValue()inMapper.phpprevents filter injection.escapeHtml()in product.js prevents XSS on autocomplete render.- SSL verification (
CURLOPT_SSL_VERIFYPEER) enabled inRetryableApiClient. - File-permission checks in
SettingsBackupServicebefore writing. - All settings changes logged with full context for audit.
Perf
- Layered-navigation facet config (labels, options) cached in memory per store.
CleanTasksCommandandCleanTaskscron switched toRetryableApiClient(replaces raw cURL).
Fix
- Settings no longer silently lost during
cleanIndex(auto-backup + auto-restore). - Attribute updates validated to ensure they were actually persisted.
- Strict comparison for swatch type checks.
- Division-by-zero in jitter calculation fixed.
[1.0.6] - 2026-01-08
Fix
SafeIndexerPluginreturn types corrected (must returnIndexerInterface, not void). Prevents "Return value must be of type IndexerInterface, null returned" during indexation.
[1.0.2] - 2025-12-15
Fix
- Removed hard dependency on
Anowave\TaxSwitchin the CustomerGroup block — prevents errors when that module is not installed.
[1.0.0] - 2024-12-15
Feature
- Initial release.
- Custom Meilisearch search adapter for Magento 2.
- Enhanced autocomplete frontend (6-product grid) with image, name, SKU, price, AJAX Add-to-Cart.
- Partial SKU search (
sku_partsfield). - Dynamic attribute management (searchable / filterable / sortable from admin).
- Auto-configuration of Magento attributes ("Use in Search = Yes" toggled automatically).
- New CLI
wimakeit:meilisearch:sync-settings. - Customer-group-based pricing (
price_<group>) in autocomplete and listings. - Custom ranking rules support.
Deps
- Requires
walkwizus/magento2-module-meilisearch.
Een bug gevonden? Laat het ons weten.
Een kort formulier opent in een nieuw tabblad — de modulenaam en uw taal zijn al ingevuld. Beschrijf wat u probeerde, wat misging, en wij komen binnen één werkdag bij u terug.
Een bug melden voor Meilisearch EngineHulp nodig?
Ons team helpt u graag met de integratie.