-
Notifications
You must be signed in to change notification settings - Fork 272
Open
Description
Context
Meilisearch's typo tolerance is a key differentiator, but we don't have a dedicated resource explaining how it differs from fuzzy search implementations in other search engines (Elasticsearch, Algolia, Typesense, etc.).
Users frequently ask why Meilisearch handles typos differently and what the practical implications are. A dedicated resource would help users understand the trade-offs and why Meilisearch's approach is unique.
What to cover
- Meilisearch's approach: prefix-based DFA (Deterministic Finite Automaton) using Levenshtein distance, computed at indexing time, applied automatically to every query with no configuration needed
- Elasticsearch/OpenSearch: fuzzy queries using edit distance, must be explicitly enabled per query with
fuzzinessparameter, configurable per field - Algolia: typo tolerance with configurable min word size thresholds, similar automatic approach but different ranking integration
- Typesense: Levenshtein-based with
num_typosparameter, must be configured - PostgreSQL:
pg_trgmtrigram similarity, fundamentally different approach (statistical similarity vs edit distance)
Key differences to highlight
- Automatic vs opt-in: Meilisearch applies typo tolerance by default with no query-level configuration needed. Most others require explicit fuzzy parameters.
- Ranking integration: Meilisearch's
typoranking rule is a first-class citizen in the bucket sort pipeline, not a post-filter or score modifier. - Performance: prefix-based DFA approach means typo matching is pre-computed during indexing, not calculated at query time.
- Word length thresholds: Meilisearch allows 1 typo for words of 5+ chars and 2 typos for 9+ chars (configurable). Compare with how others handle this.
disableOnNumbers: Meilisearch can disable typo tolerance specifically for numbers (v1.15), reducing false positives like "2024" matching "2025".
Suggested location
resources/comparisons/typo_tolerance_vs_fuzzy_search.mdx
References
- Existing pages:
/capabilities/full_text_search/relevancy/typo_tolerance_settings,/capabilities/full_text_search/relevancy/typo_tolerance_calculations - Comparison pages:
/resources/comparisons/elasticsearch,/resources/comparisons/algolia,/resources/comparisons/typesense
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels