Skip to content

The workspace map

Verbora is one Cargo workspace of 19 production crates. Knowing its shape makes the rest of this site easier to navigate.

What each crate is for

CratePublic surface
verbora-core6 traits, Token, StopWords, whitespace helpers, trim_edge_empties
verbora-tokenizers25 tokenizers, Tokenize, Utf16Token, Pattern
verbora-distance8 metric functions, 5 StringMetric impls, units
verbora-phonetics4 encoders, phoneticize_tokens*, PhoneticError, units
verbora-ngramswindow engine, stats, text entry points, zh
verbora-normalizers6 normalizers + 17 Japanese converters
verbora-inflectors6 inflectors, Rule, CaseMode, pattern
verbora-trieTrie, KeysWithPrefix, MatchesOnPath
verbora-transliteratorstransliterate_ja, transliterate_into, Phase, Rewrite, Rewrites
verbora-wordnetWordNet, Storage, Sense, Pointer, relation traversal
verbora-tfidfTfIdf, DocumentInput, Interner, Encoding
verbora-sentimentSentimentAnalyzer, VocabularyKind, Contributions
verbora-classifiersBayesClassifier, LogisticRegressionClassifier, MaxEntClassifier
verbora-stemmersPorter/Snowball language stemmers, Lancaster, Japanese and Indonesian
verbora-spellcheckSpellcheck, FuzzyIndex, DeletionIndex, lazy edits
verbora-taggerBrillPosTagger, lexicons, rules, trainer and tester
verbora-analyzersSentenceAnalyzer, TaggedWord, SenType
verbora-languagescript detection, optional language detectors, phonetic recommendations
verbora-utilabbreviations, stop words, graphs, path trees and storage backends

The dependency graph

Deliberately shallow and acyclic. Two crates reach sideways on purpose: verbora-phonetics tokenizes internally for tokenize_and_phoneticize, and verbora-transliterators shares the normalizer's kana tables rather than duplicating them.

text
verbora-core ──┬── verbora-tokenizers ── regex
               ├── verbora-distance ──── rustc-hash
               ├── verbora-phonetics ─── regex, verbora-tokenizers
               ├── verbora-inflectors ── regex
               ├── verbora-ngrams ────── rustc-hash
               ├── verbora-tfidf ─────── verbora-tokenizers, rustc-hash, serde
               └── verbora-classifiers ─ verbora-stemmers, rustc-hash

verbora-normalizers      (no dependencies at all)
verbora-trie ─────────── smallvec
verbora-transliterators ─ verbora-normalizers
verbora-wordnet ───────── verbora-core, memchr
verbora-sentiment ─────── verbora-stemmers, rustc-hash

verbora-core depends on nothing outside std. A leaf crate can therefore be used in isolation without dragging in data assets or a regex engine it does not need — verbora-normalizers in particular ships an empty [dependencies] section.

The rest of the repository

text
site/                     this site (VitePress)
docs/                     internal engineering and design notes
tools/bench-data/         generates the inputs every benchmark harness reads
benches/data/             those generated inputs
benchmarks/competitive/   head-to-head suite against pinned third-party crates
crates/verbora-examples/  compiled documentation snippets (dev-only)

verbora-examples is not a crate you depend on: it exists so that the code on this site is real. Every non-trivial snippet here is extracted into a generated example in that package and compiled and run against the actual crates — see Documentation is part of the code.

Next

Released under the MIT License.