Silo’s search engine lets you find entries by the words they contain, not just by filtering on exact field values. Search works at three levels of reach, each expressed as a distinct URL path — a narrower path can never accidentally widen to a broader one because of a missing parameter.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/org-quicko/silo/llms.txt
Use this file to discover all available pages before exploring further.
Three search scopes
Collection
Search within a single collection.
GET /api/projects/{project}/envs/{env}/collections/{name}/search?q=termEnvironment
Search across all collections in one environment.
GET /api/projects/{project}/envs/{env}/search?q=termInstance
Search everything the API key can read.
GET /api/search?q=termMaking a search request
before + match + after reconstructs the surrounding fragment. The match portion is the run to highlight — it contains no escape sequences, so text with brackets or special characters needs no extra handling.
Filtering, sorting, and pagination
Search accepts the samefilter, sort, limit, and offset parameters as list queries, plus q for the text term.
Omit
sort to rank results by relevance. Adding a sort overrides relevance ranking and returns results in the specified order instead.x-silo-auth: true in their schema. Authenticated keys follow their normal claim-based access rules.
The engine and truncated fields
The engine field in the response tells you how the query was answered:
| Value | Meaning |
|---|---|
fts5 | SQLite’s full-text index answered the query. Results are precise and ranked by relevance. |
scan | The portable fallback engine walked entries one by one. Used when the FTS index is unavailable or disabled. |
engine is scan, truncated: true means that Silo hit the scan limit before examining all entries, so total is an approximation of how many matched within the examined window — not the true total.
Configuring indexed fields
Search only indexes the fields you explicitly list. Configure which fields are indexed by addingx-silo-search to your collection’s schema:
$.data, so $.data.title indexes the title field of your entry.
Search configuration in silo.toml
Configure the search engine under the[search] section of silo.toml:
Controls how text is split into searchable tokens.
unicode61— word-based tokenization. Best for most Western-language content. Matches whole words.trigram— splits text into three-character windows. Required for substring search (e.g., matching “price” inside “repriced”) and for CJK languages (Chinese, Japanese, Korean) where word boundaries are not spaces.
Maximum number of bytes extracted from each entry for indexing. Content beyond this limit is not indexed.
Maximum number of entries the portable scan engine will examine before stopping and setting
truncated: true.Maximum wall-clock time in milliseconds the portable scan engine may spend on a single query.
Rebuilding the search index
If indexed fields change, or if the index gets out of sync for any reason, trigger a full rebuild:--check flag on the CLI reports the index status and signals whether a rebuild is needed before performing one.