tip #37: Fuzzy-Search for items & recipes

This commit is contained in:
Hermes AI Bot
2026-07-18 16:01:23 +00:00
parent 350a3eb386
commit 1037128c84
2 changed files with 28 additions and 0 deletions
+1
View File
@@ -29,3 +29,4 @@ Going forward, new tips are pushed automatically by the `mc_survival_tips.py` cr
- **[ROLLBACK]** Tip #37 was generated as an E2E test on 2026-07-17; the tip itself is valid but was pushed during testing. It will be regenerated by tomorrow's cron run.
- [Tip #37](tips/2026-07-17-037-search-fuzzy-search-for-items-recipes.md) (2026-07-17) — **search**: Fuzzy-Search for items & recipes
- [Tip #37](tips/2026-07-17-037-crafting-ux-missing-item-highlight-in-recipe.md) (2026-07-17) — **crafting-ux**: Missing-item highlight in recipe
- [Tip #37](tips/2026-07-18-037-search-fuzzy-search-for-items-recipes.md) (2026-07-18) — **search**: Fuzzy-Search for items & recipes
@@ -0,0 +1,27 @@
---
tip_number: 37
date: 2026-07-18
category: search
status: pending
---
# Tip #37 — Fuzzy-Search for items & recipes
**Date:** 2026-07-18
**Category:** search
**Source:** MC-Survival Wiki Daily Tip (cron @ 18:00 MESZ)
## Fuzzy-Search for items & recipes
Fuzzy search lets the wiki match items and recipes even when a player misspells the name, for example 'diamnd sword' or 'nethrite' instead of the correct spelling. It solves the very common problem that players land on a recipe URL from Google or a friend's chat message and cannot type the canonical item name. Real-world server logs show that exact-match-only search produces a high bounce rate on the first query, and the fix is a Levenshtein or trigram fallback on top of the existing Prisma query. With a small alias table, this also doubles as a hand-curated 'what players actually call things' layer.
## Implementation tips
1. Add a server function in functions.ts that wraps Prisma queries with a Levenshtein or trigram fallback when no exact match is found.
2. Use fuse.js (lightweight, no deps issues) on the client for instant-as-you-type feedback before hitting the server.
3. Index item aliases (e.g. 'netherite scrap' ↔ 'ancient debris') in a small ItemAlias table — most leverage for least code.
4. Highlight matched characters in the result list so users see WHY a fuzzy hit scored.
## Watch out
- Fuzzy search is expensive — debounce input by 200ms and never run it on every keystroke without a limit.