Designing a Better Baby Name Search: What I Learned About Search UX, Unicode, and Relevance
Description and use
Building an effective baby-name search system requires structured data, Unicode normalization, relevance-based ranking, and explainable results so users can quickly find desired names without extra effort.
Problem
A baby-name database requires more than CRUD; users search by meaning, alternate spellings, cultural origin, and sound, not exact spelling, making simple text search inadequate.
Outcome
The redesigned search architecture improved relevance, reduced noise, and enhanced user trust by preserving original data, applying proper Unicode handling, and providing explainable results, turning a simple CRUD app into a sophisticated search product.
Workflow
- Define a document schema with name, normalizedName, gender, meanings, origins, religions, alternateSpellings, countries.
- Normalize names using String.prototype.normalize("NFKD") and diacritic removal for search fields.
- Implement MongoDB Search with relevance scoring: exact match > normalized match > prefix > alternate spelling > meaning.
- Add autocomplete operator for as-you-type suggestions, limiting to top 5 relevant results.
- Design structured filters (gender, origin, religion, meaning, country, style, popularity, zodiac) based on user questions, not raw columns.
- Ensure original spelling is preserved for display; use separate search value for matching.
- Provide explainable ranking in UI (e.g., "Turkish origin · "moonlight" · Girl").
- Avoid collecting unnecessary personal data; keep search input transient.
- Measure failed searches and iterate on relevance.
- Test with real spelling variations and multilingual input.
Evidence
The first mistake is treating a baby name as a single string.
JavaScript's String.prototype.normalize() exists specifically to deal with these different Unicode representations.
MongoDB Search provides tools specifically for relevance-oriented search, including autocomplete, compound queries, filtering, faceting, and scoring.
- Record date: 2026-09-22T13:30:55.516Z