{"id":33423,"date":"2026-11-14T20:52:20","date_gmt":"2026-11-14T19:52:20","guid":{"rendered":"https:\/\/wooacademy.sk\/?p=33423"},"modified":"2026-11-14T20:52:20","modified_gmt":"2026-11-14T19:52:20","slug":"woocommerce-fuzzy-search-typos","status":"publish","type":"post","link":"https:\/\/wooacademy.sk\/en\/woocommerce-fuzzy-search-typos\/","title":{"rendered":"Fuzzy search in WooCommerce: a store that finds products despite typos"},"content":{"rendered":"\n<p><strong>Fuzzy search is search that finds results even when the query does not match the product text exactly.<\/strong> A shopper types &#8220;shmapoo&#8221;, &#8220;shampo&#8221; or &#8220;sampoo&#8221; and the store still shows shampoos. It works by counting how many edits (insertion, deletion, substitution or swapping letters) turn one word into another and allowing a small number of errors.<\/p>\n\n<h2>Why it matters more than it seems<\/h2>\n<p>People on mobile type fast, with a thumb, and often without accents. Brand names and foreign words get spelled the way they sound. Baymard Institute found that <strong>69% of e-commerce sites<\/strong> fail to show relevant autocomplete suggestions for slightly misspelled queries. In the same research <strong>56% of sites<\/strong> overall failed to support what people actually type into search.<\/p>\n<p>The outcome is simple: the shopper sees &#8220;No products were found&#8221; and leaves, even though you have the product in stock.<\/p>\n\n<h2>How fuzzy search works<\/h2>\n<h3>Edit distance<\/h3>\n<p>The basis is Levenshtein distance: the number of letter insertions, deletions and substitutions. &#8220;jaket&#8221; and &#8220;jacket&#8221; have distance 1 (one missing letter), &#8220;jackte&#8221; and &#8220;jacket&#8221; distance 2 in plain Levenshtein.<\/p>\n<p>When typing on a keyboard, swapping two adjacent letters is one of the most common mistakes (&#8220;jackte&#8221;). Classic Levenshtein counts it as two errors. The variant with transpositions (Damerau-Levenshtein, in its restricted form called OSA, optimal string alignment) counts it as one. For a store this is a real difference, because short words usually allow only one error.<\/p>\n<h3>How many errors to allow<\/h3>\n<p>Too much tolerance hurts. For the word &#8220;cap&#8221;, two errors would also match &#8220;map&#8221;, &#8220;cape&#8221; or &#8220;car&#8221;. A sensible rule is no error for very short words, one for medium words and two for long ones.<\/p>\n<h3>Where the correct words come from<\/h3>\n<p>The search engine does not correct against a general dictionary but against words that actually occur in your catalogue. So it corrects &#8220;bosh&#8221; to &#8220;bosch&#8221; if you sell Bosch, and it will not invent words you do not have.<\/p>\n\n<h2>Diacritics: the most common error that is not a typo<\/h2>\n<p>In Slovak, Czech, German, French and many other languages, diacritics are a topic of their own. A shopper who types &#8220;cerveny&#8221; instead of &#8220;\u010derven\u00fd&#8221; did not make a mistake, they just skipped the accents. Search should normalise both the product text and the query (remove accents) before comparing and only then look for typos. Otherwise a missing accent counts as an error and uses up the whole tolerance on a longer word.<\/p>\n\n<h2>Did you mean: the correction the shopper sees<\/h2>\n<p>If the engine finds results only for the corrected word, it should tell the shopper. For example &#8220;Showing results for shampoo. Search instead for shmapoo?&#8221;. The shopper then knows why they see what they see, and for a genuinely unusual name (a code, a model) they can go back to the original query.<\/p>\n\n<h2>When fuzzy search does not help<\/h2>\n<ul>\n<li><strong>A different word for the same thing.<\/strong> &#8220;Sneakers&#8221; and &#8220;trainers&#8221; are not a typo, for that you need <a href=\"https:\/\/wooacademy.sk\/en\/woocommerce-search-synonyms\/\">search synonyms in your store<\/a>.<\/li>\n<li><strong>A different word form.<\/strong> In inflected languages forms differ by more than one edit. That is handled by <a href=\"https:\/\/wooacademy.sk\/en\/stemming-vs-lemmatization-ecommerce-search\/\">stemming and lemmatization<\/a>.<\/li>\n<li><strong>Codes and numbers.<\/strong> For product codes (SKU, EAN) error tolerance tends to hurt, because one swapped digit finds a different product.<\/li>\n<\/ul>\n\n<h2>How wooacademy search 1.0.3 handles it<\/h2>\n<ul>\n<li>Product text and queries are compared <strong>without diacritics<\/strong>.<\/li>\n<li>Typos are counted including <strong>swapped letters (OSA)<\/strong>, not only with classic Levenshtein.<\/li>\n<li>Corrections use a <strong>vocabulary of words from your catalogue<\/strong>, which the plugin keeps up to date while indexing.<\/li>\n<li>When results come from a correction, it shows <strong>&#8220;Did you mean&#8221;<\/strong>.<\/li>\n<li>Correction already works in <a href=\"https:\/\/wooacademy.sk\/en\/woocommerce-search-autocomplete-typeahead\/\">autocomplete while typing<\/a>, not only on the results page.<\/li>\n<li>Queries that found nothing even after correction show up in the zero-results statistics.<\/li>\n<\/ul>\n<div class=\"wa-cta\" style=\"border:1px solid #d9e2ec;border-radius:10px;padding:18px 22px;margin:28px 0;background:#f5f8fb\">\n<p style=\"margin:0 0 8px\"><strong>Typos will stop costing you orders<\/strong><\/p>\n<p style=\"margin:0 0 10px\">wooacademy search 1.0.3 fixes typos, missing accents and swapped letters, and ranks results by sales and stock.<\/p>\n<p style=\"margin:0\"><a href=\"https:\/\/wooacademy.sk\/konzultacie\/\"><strong>I want this search on my store<\/strong><\/a> \u00b7 annual licence for 1 domain \u20ac249, done-for-you setup \u20ac499<\/p>\n<\/div>\n\n<h2>A quick test on your store<\/h2>\n<p>Pick your five best-selling products and search for each name with one typo and without accents. If even one returns an empty page, search is losing you customers. Which queries those are, you will find in the <a href=\"https:\/\/wooacademy.sk\/en\/woocommerce-zero-results-search-analytics\/\">zero-result search report<\/a>.<\/p>\n\n<h2>Frequently asked questions<\/h2>\n<details><summary><strong>What is the difference between fuzzy search and typo correction?<\/strong><\/summary><p>Fuzzy search is the principle of allowing small differences between query and text. Typo correction is its visible result, such as a Did you mean message.<\/p><\/details>\n<details><summary><strong>Does fuzzy search slow the store down?<\/strong><\/summary><p>Comparing against the whole catalogue would. That is why wooacademy search compares the query with a vocabulary of indexed words, not with every product separately.<\/p><\/details>\n<details><summary><strong>Does wooacademy search work without accents?<\/strong><\/summary><p>Yes. It compares product text and queries without diacritics, so ko\u0161e\u013ea, kosela and kose\u013ea find the same thing.<\/p><\/details>\n<details><summary><strong>Can I exclude certain words from correction?<\/strong><\/summary><p>For exact redirects or results for a specific query, use rules (pinning, redirects). Corrections only target words from your catalogue.<\/p><\/details>\n<p style=\"margin-top:32px;font-size:.95em;color:#555\">Author: <a href=\"https:\/\/wooacademy.sk\/milan-frano-wordpress-a-seo-skolenia\/\">Milan Fra\u0148o<\/a>, wooacademy.sk. I build WooCommerce stores, tracking setups and SEO. I developed the wooacademy search plugin for stores that want good search without paying a monthly fee to an external service.<\/p>\n\n<!-- wp:themify-builder\/canvas \/-->","protected":false},"excerpt":{"rendered":"<p>Fuzzy search tolerates typos, missing letters and missing accents. Without it a single typo shows the shopper an empty page.<\/p>\n","protected":false},"author":2,"featured_media":33375,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[698,839],"tags":[828],"class_list":["post-33423","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-wooacademy-pluginy-en","category-online-marketing","tag-seo-doktor","has-post-title","has-post-date","has-post-category","has-post-tag","has-post-comment","has-post-author",""],"builder_content":"","_links":{"self":[{"href":"https:\/\/wooacademy.sk\/en\/wp-json\/wp\/v2\/posts\/33423","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wooacademy.sk\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wooacademy.sk\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wooacademy.sk\/en\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/wooacademy.sk\/en\/wp-json\/wp\/v2\/comments?post=33423"}],"version-history":[{"count":2,"href":"https:\/\/wooacademy.sk\/en\/wp-json\/wp\/v2\/posts\/33423\/revisions"}],"predecessor-version":[{"id":33425,"href":"https:\/\/wooacademy.sk\/en\/wp-json\/wp\/v2\/posts\/33423\/revisions\/33425"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wooacademy.sk\/en\/wp-json\/wp\/v2\/media\/33375"}],"wp:attachment":[{"href":"https:\/\/wooacademy.sk\/en\/wp-json\/wp\/v2\/media?parent=33423"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wooacademy.sk\/en\/wp-json\/wp\/v2\/categories?post=33423"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wooacademy.sk\/en\/wp-json\/wp\/v2\/tags?post=33423"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}