← all features

Full-text search · live examples

Search the tickets like a search engine.

Ticket subjects and bodies are tokenized and indexed at write time — the same atomic write that stores the row. Boolean operators, phrase matching, and BM25 ranking run without an external search cluster.

01
Index
Declared FTS fields tokenize on write — one atomic put, no indexing lag.
02
Match
Boolean AND/OR and exact phrases over any indexed field.
03
Rank
BM25 scoring, k-limited, scores returned so ranking is inspectable.
checking instance…one substrate · sql / graph / vector / fts / nql
Foundations
01

Single term

easy

Every ticket mentioning “EMI” in the body.

request
GET /v1/tenants/:t/fts/tickets/body?q=emi&k=5
02

Boolean AND

easy

Tickets matching BOTH “loan” AND “hardship”.

request
GET /v1/tenants/:t/fts/tickets/body?q=loan+AND+hardship&k=5
03

Phrase match

easy

The exact phrase “repayment assistance” — no token soup.

request
GET /v1/tenants/:t/fts/tickets/body?q=%22repayment+assistance%22&k=5
04

Field-scoped search

easy

Search ONLY ticket subjects — the triage view: what are customers shouting about in the title line?

request
GET /v1/tenants/:t/fts/tickets/subject?q=urgent&k=5
Intermediate patterns
05

BM25 ranked

intermediate

Relevance-ranked results with the actual BM25 scores shown.

request
GET /v1/tenants/:t/fts/tickets/body?q=loan+repayment+review&mode=bm25&k=5
06

Composite boolean — OR + NOT

intermediate

(loan OR emi) but NOT marketing noise — nested boolean over the whole corpus.

request
GET /v1/tenants/:t/fts/tickets/body?q=(loan+OR+emi)+NOT+campaign&k=5
07

Multi-field

intermediate

Subject and body searched together, per-field weighting.

request
GET /v1/tenants/:t/fts/tickets/subject,body?q=fraud&mode=bm25&k=5
08

Phrase + boolean + BM25

intermediate

Exact phrase “repayment assistance” AND the term “rejected”, BM25-ranked — precision search for escalation review.

request
GET /v1/tenants/:t/fts/tickets/body?q=%22repayment+assistance%22+AND+rejected&mode=bm25&k=5