BM25 relevance. On the same write.
Every posting lands inside the same atomic write as the row it indexes - no separate search cluster to keep in sync. BM25, boolean and phrase modes, Lucene-default scoring, and stemming + lemmatization across 18 languages.
Lucene-default scoring (k1=1.2, b=0.75). Ranked hits, best first.
AND / OR / NOT term matching. The default mode - a bare array of doc ids.
Position-list intersection. Exact, ordered term sequences only.
Index and query any field independently, then combine in one request.
18 languages. Inflected forms reduced to their stem before scoring.
9 languages - EN, ES, FR, DE, IT, PT, RU, NL, SV. Canonical lemma, not just a stem.
Unicode word boundaries across Latin, Cyrillic, CJK, Arabic and Hindi.
Mixed-script and location-aware queries in one analyzer.
Optional diacritics fold and stopword removal per field.
Index a field, then rank against it.
Post a document to a field's index and it is searchable the instant the write commits.
Query the same field with mode=bm25 for
ranked relevance, boolean for set matching,
or phrase for exact sequences.
No sidecar search engine, no reindex job, no replication lag between your rows and your postings.
GET /v1/tenants/:t/fts/shop.products/description
?q=carbon+marathon
&mode=bm25
&k=10
# → best-first, one row per hit
[
{ "doc_id": "sku-8842", "score": 7.41 },
{ "doc_id": "sku-1207", "score": 5.96 }
]