Your visitors see “No results found” on your WordPress site more often than you’d like — and you’re not sure why. This is what’s happening and what to do, in order of effort.
Why WordPress search misses so much
WordPress default search runs one MySQL LIKE query against three columns: post_title, post_content and post_excerpt. That’s it. Every non-obvious limitation follows from this:
- All words must appear literally. A user searching “summer dress blue” misses a product titled “light cotton navy sundress” because the words summer, dress and blue are not all in the text.
- Custom fields are invisible. Anything stored in post meta — ACF fields, WooCommerce SKUs, product attributes, custom repeaters — is skipped entirely. If your product’s only distinguishing text is in an attribute, that product will not appear in the results.
- Taxonomies are invisible. Category names, tag names and WooCommerce attribute term names are not part of the search. A user searching “sneakers” will not find products in a category called Sneakers unless the word appears in the description too.
- No stemming, no synonyms. “Running” and “run” are different queries. “Trainers” and “sneakers” are unrelated.
- No cross-language matching. A French visitor typing “robe d’été” finds nothing in your English catalogue, even if the product description means exactly that.
- Public-only, published-only. Draft and private content is hidden, and custom post types are excluded unless you explicitly opt them into search.
None of this is a bug — it’s the intentional, 20-year-old default. The fix depends on which of these limitations is costing you the most.
Step 1 — find out what your users actually search for
Before you install anything, log the searches that return zero results. Two ways:
- Google Analytics 4: the built-in site_search event captures the query. Filter to sessions where the search event fires and a page-view immediately after does not, and you have a proxy for zero-result searches.
- WordPress plugins: several plugins log search queries and result counts to a database table. AI Search does this out of the box (only for searches where its AI tier rescued the query) on its Insights tab; SearchWP has a similar report.
Look at the top 20 zero-result queries. Group them into three buckets:
- The content exists but not with those words. “Warm jacket” when the product is a “wool overcoat”. Fix: semantic search.
- The content exists in fields WordPress doesn’t see. Attribute values, ACF fields, SKUs, PDF text. Fix: index more sources.
- The content doesn’t exist. Nothing you can do at the search layer — a gap in your catalogue or content. Note it for editorial.
Whichever bucket is biggest is the fix you should make first.
Fix for “the content exists but not with those words”
This is where semantic search earns its place. Semantic search converts each product, post or page into a numeric fingerprint of what it means, and matches the user’s query by proximity in meaning. “Warm jacket” finds “wool overcoat” because the two mean similar things.
AI Search installs in two minutes, needs no API key, and covers up to 2,000 pieces of content on the Free plan. It leaves your existing keyword search alone — keyword and exact SKU matches still rank first; AI results are added below them. Nothing about the search form or results template gets touched. Uninstall reverses it in one click.
Try it against your own three worst zero-result queries. If you don’t want to install yet, pick one of your queries and drop it into the live demos to see how the same query behaves on and off the AI layer.
Fix for “the content exists in fields WordPress doesn’t see”
If your top zero-result queries are exact SKUs, model numbers, part references, or ACF field values, semantic search doesn’t help — you need a keyword indexer that reads more than the default columns. Real options:
- Relevanssi (freemium) — the classic. Indexes taxonomies, custom fields and comments, adds stemming, works well for content sites. Free version is genuinely usable.
- SearchWP (paid, from $99/year) — more polished, indexes PDFs and media too, has a granular weighting UI. Best for content-heavy sites where custom fields and documents matter.
- AI Search (free tier) — if the missing content is only in custom fields you control, opt them into the AI Search index from the plugin settings and they’ll be part of both keyword and semantic matching. Doesn’t handle PDFs or media metadata.
These aren’t either/or: Relevanssi or SearchWP can handle the “index more sources” job while AI Search adds the semantic layer on top. See AI Search vs SearchWP for the composition detail.
Fix for “users type in a different language”
WordPress default search has no cross-language matching — a French query never finds an English product. Two options:
- Translate your catalogue with WPML, Polylang or Weglot. Ideal but expensive if the catalogue is large.
- Use semantic search that matches meaning across languages. AI Search does this out of the box on 100+ languages, and the paid Standard plan runs on
text-embedding-3-largewhich is materially better at cross-lingual queries (roughly 10 points better on OpenAI’s MIRACL benchmark, per this post).
The one-hour workflow that catches most zero-results
If you want a concrete plan to work through in an afternoon:
- Enable site search tracking in Google Analytics (15 minutes).
- Wait a week; export the top 20 search queries and note which ones returned zero results.
- Group them into the three buckets above.
- Fix the biggest bucket first. For most stores and blogs, it’s bucket 1 — semantic gaps — and installing AI Search Free clears it in 2 minutes with no risk to the current setup.
- Re-check zero-results after 2 weeks. Whatever is left will be much clearer.
What not to do
- Don’t just lower the similarity threshold on whatever search plugin you use. Broader results with more noise usually feel worse than fewer, correct ones.
- Don’t rebuild the search UI first. Fancier autocomplete on top of the same broken engine doesn’t fix zero-results — it just makes them appear faster.
- Don’t install five search plugins. Two well-chosen plugins that compose (one for indexing sources, one for semantic matching) beats a stack.
Related: wondering if a Shopify migration is the only fix for weak store search? See our take on Shopify vs WooCommerce search and how to get semantic search on WordPress.