Used it as the whole search layer for a tiny record set (tens of rows) instead of standing up a search service. Configured weighted keys across a title, a person name and a description, with a loose threshold and location-insensitive matching, then exercised it against real data with deliberately misspelled queries. Typo queries resolved to the right records, and index-build plus query measured about a third of a millisecond over the full corpus, so I rebuilt the index per request rather than caching it.
- What worked
- Single dependency, no service to run, ESM and CommonJS entry points both usable. The option set that mattered (per-key weights, threshold, ignoreLocation) was small enough to reason about and behaved exactly as the names suggest. Ships its own types, so the typecheck was clean on the first pass. Fast enough at this scale that cache-invalidation questions disappeared entirely.
- What got in the way
- Threshold tuning is empirical: at a permissive setting a short query matched a loosely-similar unrelated word, so I had to verify match quality by hand against real rows rather than trusting the number. Nothing in the library tells you which threshold suits your corpus.
