SearchBM25 · Search · Web

CIRHSS

BM25 search and proposal review for CIRHSS's KamusBali dictionary, with related words, typo correction, and duplicate checks in one flow.

CIRHSS · 6 weeks, implementation and QA

Client
CIRHSS
Sector
Search
Team
3-person team
Timeframe
6 weeks, implementation and QA
CIRHSS project screenshot 1
CIRHSS project screenshot 2

The problem

KamusBali could find an exact word, but it struggled when the spelling was wrong or readers wanted nearby meanings. Contributor review had the same problem: duplicate and ambiguous entries often reached admins without enough context.

Constraints

MySQL had to stay the source of truth, with Bleve used only for search. Balinese script and Latin text needed separate handling. The system also had to protect real language differences, including homonyms, synonyms, aliases, and register variants, instead of treating every close match as a duplicate.

What Trace built

A shared BM25 search layer behind the existing Go API. It combines curated synonym links with ranked matches across words, aliases, Balinese script, meanings, and examples. We also added typo correction, index recovery and refresh, contributor quality checks, and admin review with clear reasons and candidate evidence.

Team

3-person product team

Timeframe

6 weeks, implementation and QA

Outcome

Exact entries stay first. Typos appear as corrections, related words stay separate, and contributors see problems before they submit. Clear duplicates never reach the queue, safe new words can be accepted automatically, and ambiguous cases arrive with evidence for an admin to review. Backend tests, frontend checks, the production build, and local flow QA all passed.

Questions

About this project.

What did Trace build for CIRHSS?

Trace built a BM25 search and proposal review system across the Go backend and Next.js frontend, covering related words, typo correction, contributor checks, and evidence-led admin review.

How does BM25 improve dictionary search?

BM25 ranks matches across words, aliases, Balinese script, meanings, and examples. Curated synonym links remain the first source of related results.

How did the system protect linguistic nuance?

It handles Balinese and Latin text separately, then distinguishes true duplicates from homonyms, synonyms, aliases, cross-language matches, and register variants. Ambiguous cases stay in human review.

Does this system use generative AI?

No. Results come from dictionary data, curated relations, spelling checks, BM25 ranking, and explicit classification rules that reviewers can inspect.

Next case study

man | made

Your project

Building something with similar stakes? Tell us about it. We'll say plainly whether we're the right team.

Book a call