Operations

Reading Meilisearch search analytics: zero-result queries and what to do about them

by the AdminDex team 7 min read

The most actionable signal in Meilisearch search analytics isn't your top-queries list — it's your zero-result rate and your top-five zero-result queries. Top queries tell you what's working. Zero-result queries tell you what's broken.

The 30-second answer

  • Check your zero-result rate first. If it's above 5%, you have a content gap or a relevance bug.
  • Read the top zero-result queries next. Each one is a missing synonym, missing content, or misconfigured ranking rule.
  • Glance at the top queries last — interesting context but rarely actionable on its own.

The four numbers that matter

1. Total searches

How busy is search? Useful for capacity planning and for seeing whether a UI change moved the needle. Not directly actionable on its own — it's the denominator for the other metrics.

2. Zero-result rate

Of all searches in the window, how many returned zero hits? Below 3% is healthy. Between 3% and 10% is "investigate when you have time". Above 10% is "drop everything and look at this".

3. Average latency (p50 and p95)

How fast is search? p50 (median) tells you the typical experience. p95 tells you the worst-case for 5% of users. For Meilisearch, p50 should be under 50 ms and p95 under 200 ms. If either is higher, your index is too big for the box, your settings are unoptimised, or you have a network problem between your application and Meilisearch.

4. Top zero-result queries

The top 10 queries that returned zero hits. This is the highest-leverage list in the entire dashboard. Every entry is either:

  • A missing synonym ("tv" not matching "television" docs)
  • A missing content type ("returns policy" with no relevant page)
  • A misconfigured ranking rule (matching docs exist but rank below the page-1 cutoff)
  • A typo tolerance gap (the user's typo is too far from any indexed term)

What to do about each pattern

Missing synonyms

The user typed a word your index doesn't contain, even though semantically equivalent content exists. Add a synonyms entry mapping the searched word to the indexed word. Reindex completes in seconds. Watch the zero-result rate drop on the next analytics refresh.

Missing content

The user is searching for something that genuinely doesn't exist in your index. Two responses:

  • If it's a content gap your team should fix, file a ticket to write the missing page / add the missing product / index the missing data.
  • If it's an out-of-scope query (someone searching for an unrelated brand on your site), consider showing a "No results — try [related search]" page rather than a blank state.

Misconfigured ranking

Sometimes the matching docs do exist but rank below the position you're showing on page 1. Run the query yourself with showRankingScoreDetails=true and inspect the per-rule contributions. Almost always points at a ranking-rule reorder.

Typo tolerance gap

The user typed a word with two or more typos that Meilisearch's typo tolerance can't reach (the word was too short, or the typo count was too high). Either lower the minWordSizeForTypos threshold or add a synonym for the common typo form. See the typo tolerance guide.

What NOT to optimise for

Don't chase a 0% zero-result rate

Some queries genuinely have no answer. A user searching for "kjasdhflkjasd" should return zero results. The goal is "no zero-result query that should have had results", not "literally zero zero-result queries".

Don't optimise for the long tail

The top 20 queries account for the majority of search traffic on most sites. Fix those first. The 1,000 unique queries that ran once each are usually noise.

Don't tune ranking based on top queries

If your top queries already work well, leave them alone. Tuning for them risks breaking the relevance of queries you can't see.

A weekly analytics ritual

This takes about 10 minutes once a week:

  1. Open the analytics page for the past 7 days.
  2. Note the zero-result rate. Did it move significantly from last week?
  3. Read the top 10 zero-result queries. For each one, identify which of the four patterns above it falls into.
  4. Fix the easy ones (synonyms) immediately. File tickets for the harder ones.
  5. Glance at p95 latency. Did it spike? Investigate if so.

That's it. Most teams discover they can move their zero-result rate from 8% to 3% in a few weeks of this ritual.

FAQ

Does Meilisearch ship search analytics out of the box?

Not directly — Meilisearch doesn't have a built-in analytics endpoint that captures production query traffic. You need to either log every search request from your application, proxy traffic through a service that captures it, or use a third-party tool that does this for you.

What's the difference between processing time and total time?

Meilisearch's processingTimeMs is the time the engine spent on the query — pure compute. Your application's "total time" includes network round-trips and serialization. Both matter; the former points at engine bottlenecks, the latter at architecture bottlenecks.

How long should I keep search analytics data?

30 days is enough for week-over-week comparisons. 90 days is enough for quarter-over-quarter. Anything longer is rarely useful for tactical decisions.

Does AdminDex capture search analytics?

Yes — AdminDex ships a search analytics dashboard with the four metrics from this article (total searches, zero-result rate, average latency, top zero-result queries). In v1, analytics captures only searches you run from AdminDex's own browse-page preview; production-traffic capture is on the roadmap.

Stop running Meilisearch from a terminal.

AdminDex gives you a visual dashboard for every Meilisearch instance you own — settings, API keys, tasks, and search analytics.

Connect your first instance

Related reading