Skip to content

sct lexical

Keyword search over the SNOMED CT SQLite database using FTS5 full-text search.

When to use: you know what words to search for. sct lexical "heart attack" returns concepts containing those words. For meaning-based search (when exact words don't match), use sct semantic.


Usage

sct lexical <QUERY> [--db <FILE>] [--hierarchy <NAME>] [--limit <N>]

Options

Argument / Flag Default Description
<QUERY> (required) Search query. FTS5 syntax: "exact phrase", prefix*, term AND term, etc.
--db <FILE> snomed.db (cwd or $SCT_DB) SQLite database produced by sct sqlite.
--hierarchy <NAME> (all) Restrict results to a top-level hierarchy (e.g. "Clinical finding").
--limit <N> 10 Maximum number of results.

Examples

sct lexical "heart attack"
sct lexical "myocardial infarct*"
sct lexical "heart attack" --hierarchy "Clinical finding"
sct lexical "beta blocker" --limit 20 --db /data/snomed.db

FTS5 query syntax

Syntax Example Matches
Plain terms heart attack Concepts containing both words (implicit phrase)
Exact phrase "heart attack" Concepts containing the exact phrase
Prefix cardio* Concepts with any word starting with "cardio"
Boolean AND heart AND failure Concepts containing both terms
Boolean OR infarct OR infarction Concepts containing either term
Boolean NOT asthma NOT occupational Asthma, excluding occupational variants

Plain text queries (no operators) are automatically quoted to avoid parse errors on special characters. Results are ranked by FTS5 BM25 relevance.


Comparison with sct semantic

sct lexical sct semantic
Basis Keyword matching (FTS5) Meaning / vector similarity
Input SQLite .db Arrow .arrow + Ollama
Speed Instant ~1–2 s (embedding the query)
Finds synonyms Only if indexed Yes
Finds related concepts without shared words No Yes
Works offline Yes Requires local Ollama

Use sct lexical when you know the SNOMED term. Use sct semantic when you're describing a concept in plain language.