Full-text vault search for Obsidian
Profile-based ranking · extended query grammar · offline-first
glyph-s engine · Site · README.ru · glyph-s · glyph-miO
glyph-sO is an Obsidian community plugin for full-text search across your vault. Unlike Obsidian’s built-in quick switcher (Ctrl+O), which matches file names only, glyph-sO indexes note content and ranks results with contextual snippets — so you can find ideas buried inside paragraphs.
The plugin is part of the Glyph 2.8 family and runs on the shared glyph-s search engine.
| Obsidian quick switcher | glyph-sO | |
|---|---|---|
| Matches | File names | Full note text |
| Snippets | No | Yes — jump to the match |
| Query filters | Limited | path:, tag:, phrases, OR, excludes |
| Offline | Yes | Yes (Ollama optional) |
Editor highlight — Enter opens the note and selects the first match for your query token, scrolled into view.
Search stats — results header/footer show N results in M notes · X ms (M = indexed vault size).
Hover preview — extended snippet context on row hover (tooltip + floating preview).
Folder grouping — optional folder headers in the results list (Settings → Group results by folder).
Persistent search index — \index-cache.json\ in the plugin folder; vault reload reuses entries when \mtime\ matches (Settings → Persistent search index).
2.8.0 adds editor highlight on jump, folder grouping, hover preview, search stats, and pinned queries (Shift+click recent/pinned chips). Persistent vault index shipped in 2.7.3.
Full-text search actually searches the body — the vendored glyph-s fast-path now includes note body text, so words buried only in paragraphs are no longer dropped before scoring.
Snippet match highlight — results show the matched span again (adapter keeps offsets from engine <mark> instead of stripping them).
Leaner main.js — removed ~250 lines of unused pre-2.7 ranking duplicates; search goes through services/search-engine.js → vendor/engine.js only.
Clearer profiles — settings show Fast / Standard / Deep (stored values remain legacy / balanced / max-quality) with tooltips.
Search diagnostics — optional toggle shows candidateCount / scoredCount / elapsedMs in the modal footer (via glyph-s onDiagnostics).
Layout-fix hint — when EN↔RU keyboard correction applies, a line under the input shows Also showing results for: … (layout fixed).
Filter autocomplete — best-effort tag: / path: suggestions from the vault (non-blocking).
Vendor version check — on load, compares vendor/VERSION.json to manifest.glyphEngineVersion and warns with a Notice if they differ.
| Label (UI) | Value | Best for |
|---|---|---|
| Fast | legacy |
Maximum compatibility with pre-2.7 behavior |
| Standard | balanced |
Default — good speed and relevance for daily vaults |
| Deep | max-quality |
Deeper fuzzy matching, more candidates scanned |
Extended query grammar — compose precise searches:
"path:projects/" → notes in a folder
tag:evergreen → filter by tag
"deep work" -draft → phrase match, exclude drafts
(task OR todo) type:note → OR group with type filter
path: journal tag:daily → combine filters
Modular architecture — search logic in services/search-engine.js, powered by the vendored glyph-s engine. Easier updates and consistent ranking with other Glyph products.
Compact mode — minimalist panel spacing (enabled by default). Toggle in Settings → Compact mode.
- Download the latest release from Releases.
- Extract into your vault:
.obsidian/plugins/glyph-s-o/
├── manifest.json
├── main.js
├── styles.css
├── services/
│ └── search-engine.js
└── vendor/
├── engine.js
└── VERSION.json
- Enable glyph-sO in Settings → Community plugins.
| Action | How |
|---|---|
| Open search | Ribbon icon 🔍 or command palette → Glyph: search vault |
| Navigate results | ↑ ↓ arrow keys |
| Open note at match | Enter |
| Recent queries | Shown when the input is empty |
tag: / path: |
Type the prefix for vault suggestions |
Tip: Obsidian’s Ctrl+O finds files by name. Use glyph-sO when you remember what you wrote, not where you saved it.
| Setting | Description |
|---|---|
| Search profile | Fast / Standard / Deep (legacy / balanced / max-quality) |
| Compact mode | Minimalist result panel (default: on) |
| Group results by folder | Folder headers in results list (default: off) |
| Show search diagnostics | Footer shows candidate/scored counts and elapsed ms |
| Match all words | Require every token to match (AND vs OR) |
| Fuzzy layout | EN↔RU keyboard layout correction (+ under-input hint) |
| Fuzzy transliteration | Rough Latin↔Cyrillic matching |
| Ollama query enrich | Optional local LLM query expansion |
| Hide hotkey hint | Remove shortcut hint from the modal |
For summaries and tag suggestions on the active note, install glyph-miO alongside glyph-sO. Together they cover search + metadata intelligence in Obsidian.
main.js # Obsidian plugin entry, UI, vault indexing
services/search-engine.js # Adapter: settings → glyph-s rankSearchItems
services/search-ui.js # Stats, folder groups, editor match offset
vendor/engine.js # Bundled glyph-s (CJS)
vendor/VERSION.json # Stamp from glyph-s vendor:sync
styles.css # Panel styles incl. .glyph-so-compact
The plugin builds a search index from vault markdown files and passes items to rankGlyphResults() with the user’s profile and fuzzy settings. On load it compares vendor/VERSION.json to manifest.glyphEngineVersion.
When glyph-s is updated, sync the Obsidian CJS vendor (writes engine.js, ollama.js, profiles.json, and VERSION.json):
cd ../glyph-s
npm run vendor:sync
# equivalent: npm run bundle:obsidianOr from this repo:
npm run vendorKeep manifest.glyphEngineVersion aligned with the stamped vendor/VERSION.json version field after syncing.
| Path | Role |
|---|---|
main.js |
Plugin class, modal, settings tab, index builder |
services/search-ui.js |
groupResultsByFolder, formatSearchStats, findFirstMatchOffset |
services/search-engine.js |
rankGlyphResults, queryAlternatives |
vendor/engine.js |
rankSearchItems, snippetForItem, parseSearchQuery |
vendor/VERSION.json |
Engine version stamp for runtime mismatch Notice |
.github/workflows/release.yml |
Packages services/ + vendor/ into release zip |
.github/workflows/pages.yml |
Deploys docs/ to GitHub Pages |
The release workflow zips manifest.json, main.js, styles.css, services/, and vendor/ so the module-based runtime works out of the box.
| Repo | Role |
|---|---|
| glyph-s | Shared search engine core |
| glyph-miO | Metadata intelligence for Obsidian |
| glyph-mi | Universal MI core |
GPL-3.0 · Floke Studio