Smart Search for CS-Cart and Multi-Vendor
A customer who reaches the search box is ready to buy. If the search finds nothing, they leave — usually for a competitor.
The stock CS-Cart search matches a query against the beginning of a string in the database. It does not forgive typos, knows no synonyms, has no idea that a brand name typed in another alphabet is the same brand, and slows down noticeably as the catalog grows.
We have released an add-on that hands the search over to Elasticsearch and adds everything the stock one is missing.
More than search: listings, blocks and filters
In CS-Cart every product listing is built by a single core function, and on a large catalog it turns into a heavy database query. The add-on intercepts that function entirely, so the index serves not only search results but also category listings, product blocks and filter blocks. Check boxes in the settings decide what goes to Elasticsearch.
Measured on a live marketplace: a catalog of 779,000 products and 848,000 documents in the index. The same page was opened in two modes — normal and with the skip_elastic=Y key that turns Elasticsearch off for a single request. Every URL was unique, so no cache was involved either way; 18 paired runs, medians in the table.
| What the customer opens | On MySQL | On Elasticsearch | Gain |
|---|---|---|---|
| Category page | 8.3 s | 1.5 s | 5.7× |
| Same category, page 200 | 8.0 s | 1.4 s | 5.6× |
| Filter by a feature | 7.9 s | 1.5 s | 5.4× |
| Home page with product blocks | 7.3 s | 0.9 s | 8.5× |
| Search by a word | 18.1 s | 1.1 s | 17× |
Catalog depth stops costing time: pages 3, 60 and 200 of a category all open in the same time on Elasticsearch — 1.47, 1.54 and 1.42 seconds — while on MySQL each of them costs about eight seconds.
Writing stays with MySQL: imports, ERP sync and price recalculations go to the database while the customer reads the index, so a nightly price feed no longer drags the storefront down.
What gets found now
| The customer types | Stock search | Smart Search |
|---|---|---|
cfvceyu — “samsung” on a Russian layout |
nothing | Samsung products |
| a brand name typed in another alphabet | nothing | the brand’s products |
televisin with a typo |
nothing | televisions |
telly |
nothing | televisions, from the synonym dictionary |
sneakers size 43 |
the size lives in a feature and is not searched | sneakers in that size |
| a word in the middle of the name | no match | match |
Wrong keyboard layout:
cfvceyu is “samsung” typed with a Russian layout. 21 products found.
Another alphabet: a Cyrillic spelling finds Toshiba, and autocomplete offers the exact name.
What the store owner gets
Query analytics. What was searched for, how often, and what was found. Queries that returned nothing are listed separately: a direct list of what the catalog is missing, or of what is named differently from the way customers look for it.
Zeros in the “Found” column are a ready-made task list for the catalog.
Control over relevance. Weight and typo tolerance are set per field: name, product code, short and full description, meta tags, features.
The name is usually 100, descriptions 10–20, and the product code is matched exactly with no typo tolerance.
Dictionaries for your niche. Synonyms, stop words and prepared suggestions, with import and export. Morphology per language — each storefront language gets its own stemming algorithm. Relief for the database — product lists, product blocks and search move to Elasticsearch.
What the add-on does not do
- It does not install Elasticsearch. The add-on connects to it; the server is yours.
- It does not work without a scheduler. The index is kept current by cron jobs; without them new products never reach the results.
- It does not restyle your store. The search layer is designed for UniTheme2; it works on other themes, but budget some time to fit it to your design.
- It does not run alongside Cart-Power Live Search — enabling Smart Search disables that add-on automatically.
Compatibility
CS-Cart and Multi-Vendor 4.17.1 – 4.21.1, all four editions. PHP 7.4 – 8.3. Elasticsearch 8.x. Requires the Cart-Power: Add-ons Manager add-on.
See it and read it
Demo store: [redacted] — type cfvceyu or a misspelled product name into the search field and see what happens.
Ask your questions in this thread — we answer here.
The add-on on Marketplace: Smart Search & Catalog on Elasticsearch for CS-Cart — Cart-Power
The live demo and the documentation are linked on the same page.











