FTS Spell Correction
MDDB includes a SymSpell-based spell checker that improves full-text search recall by correcting typos before querying the FTS index.
Enable
Spell correction is disabled by default. Enable it via environment variable:
MDDB_SPELL=true mddbd
Or with Docker:
environment:
MDDB_SPELL: "true"
When enabled, MDDB builds a frequency dictionary from all indexed documents at startup. The index loads in the background โ queries return 503 until ready.
Endpoints
Spell Suggestions
POST /v1/spell-suggest
Returns per-token suggestions and a corrected version of the input text.
{
"collection": "articles",
"text": "quikc brwon fox",
"lang": "en",
"maxSuggestions": 3
}
| Field | Required | Description |
|---|---|---|
text |
โ | Input text to check |
lang |
โ | Language code (en, pl, de, โฆ) |
collection |
โ | Scope to collection's custom dictionary |
maxSuggestions |
โ | Max suggestions per token (default 5) |
Response:
{
"originalText": "quikc brwon fox",
"suggestedText": "quick brown fox",
"tokenSuggestions": [
{ "token": "quikc", "suggestions": ["quick"] },
{ "token": "brwon", "suggestions": ["brown"] }
]
}
Apply Corrections
POST /v1/spell-cleanup
Applies the best correction for each token and returns cleaned text.
{
"collection": "articles",
"text": "quikc brwon fox",
"lang": "en"
}
Response:
{
"original": "quikc brwon fox",
"cleaned": "quick brown fox",
"correctionsApplied": 2
}
Custom Dictionary
List โ GET /v1/spell-dictionary?lang=en&collection=articles
Add โ PUT /v1/spell-dictionary
{
"collection": "articles",
"lang": "en",
"words": ["MDDB", "mddbd", "SymSpell"],
"frequency": 500
}
Higher frequency gives words stronger priority. Default is 100.
Remove โ DELETE /v1/spell-dictionary
{
"collection": "articles",
"lang": "en",
"words": ["mddbd"]
}
Integration with FTS
CLEANED=$(curl -s -X POST http://localhost:11023/v1/spell-cleanup \
-d '{"text":"documnt retriveal","lang":"en"}' | jq -r .cleaned)
curl -s -X POST http://localhost:11023/v1/search \
-d "{\"collection\":\"articles\",\"query\":\"$CLEANED\",\"lang\":\"en\"}"