Skip to content

Installation

Verbora is a Cargo workspace of focused crates. Depend on the ones you need, not on a monolith: verbora-distance pulls in no data assets, and verbora-normalizers has no dependencies at all.

Requirements

Rust1.85 or newer (rust-version = "1.85")
Edition2024
PlatformAny Rust target the crate supports; no C runtime dependency
unsafeDenied workspace-wide (unsafe_code = "deny")

Add a crate

toml
[dependencies]
verbora-tokenizers = "0.1"
Pre-1.0. The crates are at 0.1.0. If the version you want is not on crates.io yet, use the git or path form below — the code is identical either way.

From git:

toml
[dependencies]
verbora-tokenizers = { git = "https://github.com/addlayerio/verbora" }

From a local checkout:

toml
[dependencies]
verbora-tokenizers = { path = "../verbora/crates/verbora-tokenizers" }

Which crate do I need?

Each crate stands alone. verbora-core is pulled in transitively when a crate needs the shared traits; you only name it yourself if you are writing generic code or implementing the traits.

CrateDepend on it forPulls in
verbora-tokenizers25 tokenizers, the Tokenize traitverbora-core, regex
verbora-distanceLevenshtein, Damerau, Jaro–Winkler, Dice, Hammingverbora-core, rustc-hash
verbora-phoneticsSoundEx, Metaphone, Double Metaphone, Daitch–Mokotoffverbora-core, regex
verbora-ngramsn-gram windows, frequency stats, Chinese n-gramsverbora-core, rustc-hash
verbora-normalizersdiacritic folding, English contractions, Japanese width/kananothing
verbora-inflectorspluralise/singularise, ordinals (en/fr/ja)verbora-core, regex
verbora-trieprefix tree, prefix search, path matchingsmallvec
verbora-corethe shared traits, Token, StopWords, whitespace helpersnothing (optional serde)
verbora-stemmersstemming for sixteen languagescore, tokenizers, normalizers
verbora-spellcheckcorrection and fuzzy/deletion indexescore, distance, trie, rustc-hash
verbora-taggerBrill POS tagging, training and testingcore, rustc-hash, embedded lexicons
verbora-analyzerssentence structure analysis over POS-tagged inputcore
verbora-languagescript/language detection and phonetic recommendationscore, phonetics, transliterators
verbora-transliteratorsJapanese kana-to-romaji transliterationnormalizers
verbora-wordnetWordNet lookup and relation traversalcore, memchr
verbora-tfidfsparse TF-IDF indexing and queryingcore, tokenizers, rustc-hash, serde
verbora-sentimentmultilingual lexicon sentimentstemmers, rustc-hash
verbora-classifiersBayes, logistic regression and MaxEntcore, stemmers, rustc-hash
verbora-utilstop words, abbreviations, graphs and storagecore, rustc-hash, serde

A typical text pipeline:

toml
[dependencies]
verbora-tokenizers = "0.1"
verbora-normalizers = "0.1"
verbora-ngrams = "0.1"

A fuzzy-matching service:

toml
[dependencies]
verbora-distance = "0.1"
verbora-phonetics = "0.1"
verbora-trie = "0.1"

Cargo features

Every optional feature is off by default, so a plain dependency stays sequential and pulls in nothing extra. Features add explicit parallel batch APIs, two language-detection implementations, and a serde hook on the core types — see Cargo features.

Building from source

bash
git clone https://github.com/addlayerio/verbora
cd verbora

cargo build --workspace          # everything
cargo test  --workspace          # unit + integration + doctests
cargo bench -p verbora-distance  # Criterion benchmarks

The test suites replay large recorded corpora, so the workspace sets opt-level = 2 for the test profile and for every dependency in dev — an unoptimised debug build makes them unusably slow.

Next

Released under the MIT License.