diff --git a/TIPS.md b/TIPS.md index 032bfad..edffe1d 100644 --- a/TIPS.md +++ b/TIPS.md @@ -24,3 +24,4 @@ Going forward, new tips are pushed automatically by the `mc_survival_tips.py` cr - [Tip #31](tips/2026-07-12-031-admin-soft-delete-with-30-day-restore.md) (2026-07-12) — **admin**: Soft-Delete with 30-day restore - [Tip #32](tips/2026-07-13-032-performance-code-split-heavy-components-on-the-recipe-page.md) (2026-07-13) — **performance**: Code-split heavy components on the recipe page - [Tip #34](tips/2026-07-15-034-social-user-comments-on-recipes.md) (2026-07-15) — **social**: User-Comments on recipes +- [Tip #37](tips/2026-07-17-037-search-fuzzy-search-for-items-recipes.md) (2026-07-17) — **search**: Fuzzy-Search for items & recipes diff --git a/tips/2026-07-17-037-search-fuzzy-search-for-items-recipes.md b/tips/2026-07-17-037-search-fuzzy-search-for-items-recipes.md new file mode 100644 index 0000000..30d4f51 --- /dev/null +++ b/tips/2026-07-17-037-search-fuzzy-search-for-items-recipes.md @@ -0,0 +1,20 @@ +# Tip #37 — Fuzzy-Search for items & recipes + +**Date:** 2026-07-17 +**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.