novident_spell_checker 1.0.1
novident_spell_checker: ^1.0.1 copied to clipboard
Spelling correction & fuzzy search based on the symmetric delete spelling correction algorithm. Dart port of symspell-ex with some extra things.
Changelog #
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
1.0.1 - 2026-08-15 #
- fix(tokenizer): preserve exact whitespace and token offsets by @CatHood0 in https://github.com/Novident/novident_spell_checker/pull/1
New Contributors #
- @CatHood0 made their first contribution in https://github.com/Novident/novident_spell_checker/pull/1
1.0.0 - 2026-08-15 #
Initial release: Dart/Flutter port of symspell-ex (symmetric delete spelling correction) with a full dictionary ecosystem.
Added #
Spell-check engine
SymSpellEx: symmetric delete index withlookup/search(fuzzy suggestions),correct(full sentence correction with punctuation, spacing and capitalization preservation),add/train/trainDictionary(bulk training),hasTerm(O(1) exact membership) andclear.- Synchronous API (the original is async only because of its Redis store); per-keystroke hot path is allocation-light.
- Multi-language dictionaries with isolated namespaces and runtime language switching.
MemoryStorebehind a smallDataStoreabstraction.DamerauLevenshteinDistance(transposition-aware, cached arrays).CoreTokenizer: url / number / word / punctuation classification for latin and arabic alphabets, with spacing metadata (token.distance).Trie: compact packed child/sibling vocabulary with prefix queries (withPrefix) for validity checks and autocomplete.- Constants: ~190
Languagescodes,TokenTags,Alphabets.
Dictionary formats & I/O
Dictionary: plain word lists,word frequencylists andterm,frequencyCSV — parse (fromLines/fromCsv/fromBytes) and export (toLines/toBytes/toByteStream) with lossless round-trips.HunspellDictionary:.dicand personal dictionary parsing (count header,/FLAGS, escaped slashes, multi-word pairs,*forbiddenentries, UTF-8 BOM) plus export back to Hunspell format.AffixRules: optional.affsupport —FLAG(default/long/num/UTF-8),PFX/SFXwith stripping, conditions (.,[abc],[^abc], multi-char), cross products and continuation classes.HunspellDictionary.expand(AffixRules)generates full word forms (measured:es_ES55,820 stems → 652,256 forms, 11.7x).AssetDictionaryLoader:load,loadHunspell,loadAffix,loadHunspellWithAffixesfor Flutter assets.- Streaming I/O:
fromByteStream/fromLineStream,trainByteStream/trainLineStream,exportStream/toByteStream— chunk-boundary-safe reading and batched writing for very large dictionaries (1M+ words).
State management
SymSpellEx.exportDictionary/exportLines/exportBytes/exportStream: export trained terms (including runtime-learned words) back to files; language-isolated and delete-key-free.