Omnisearch is a search engine that "just works". It always instantly shows you the most relevant results, thanks to its smart weighting algorithm.
Under the hood, it uses the excellent MiniSearch library, and obsidian-text-extract for PDFs and images.
Omnisearch's first goal is to locate files instantly. You can see it as a Quick Switcher on steroids.
- Find your 📝notes, 📄PDFs, and 🖼images faster than ever
- Images OCR and PDF indexing are only available on desktop
- Automatic document scoring using
the BM25 algorithm
- The relevance of a document against a query depends on the number of times the query terms appear in the document, its filename, and its headings
- Keyboard first: you never have to use your mouse
- Workflow similar to the "Quick Switcher" core plugin
- Fuzzy search
- Switch between Vault and In-file search to quickly skim multiple results in a single note
- Supports
"expressions in quotes"
and-exclusions
- Directly Insert a
[[link]]
from the search results - Supports Vim navigation keys
Note: support of Chinese, Japanese, Korean, etc. depends on this additional plugin. Please read its documentation for more information.
- Omnisearch is available on the official Community Plugins repository.
- Beta releases can be installed through BRAT. Be advised that those versions can be buggy and break things.
You can check the CHANGELOG for more information on the different versions.
Omnisearch can be used within 2 different contexts:
Omnisearch's core feature, accessible with the Command Palette "Omnisearch: Vault search". This modal searches through your vault and returns the most relevant notes. That's all you need to find a note.
If you want to list all the search matches of a single note, you can do so by using tab
to open the In-File Search.
Also accessible through the Command Palette "Omnisearch: In-file search". This modal searches through the active note's content and lists the matching results. Just press enter to automatically scroll to the right place.
You can open Omnisearch with the following scheme: obsidian://omnisearch?query=foo bar
For plugin developers and Dataview users, Omnisearch is also accessible through the global
object omnisearch
(window.omnisearch
)
This API is an experimental feature, the
ResultNote
interface may change in the future. Thesearch()
function returns at most 50 results.
// API:
{
// Returns a promise that will contain the same results as the Vault modal
search: (query: string) => Promise<ResultNoteApi[]>
}
type ResultNoteApi = {
score: number
path: string
basename: string
foundWords: string[]
matches: SearchMatchApi[]
}
type SearchMatchApi = {
match: string
offset: number
}
You can use the Omnisearch API directly within the Dataview plugin.
```dataviewjs
const results = await omnisearch.search('your query')
const arr = dv.array(results).sort(r => r.score, 'desc')
dv.table(['File', 'Score'], arr.map(o => [dv.fileLink(o.path), Math.round(o.score)]))
```
There are several CSS classes you can use to customize the appearance of Omnisearch.
.omnisearch-modal
.omnisearch-result
.omnisearch-result__title
.omnisearch-result__counter
.omnisearch-result__body
.omnisearch-highlight
.omnisearch-input-container
.omnisearch-input-field
For example, if you'd like the usual yellow highlight on search matches, you can add this code inside a CSS snippet file:
.omnisearch-highlight {
color: var(--text-normal);
background-color: var(--text-highlight-bg);
}
See styles.css for more information.
Omnisearch makes Obsidian sluggish/freeze at startup.
- While Omnisearch does its best to work smoothly in the background, bigger vaults and files can make Obsidian stutter during indexing.
- If you have several thousands of files, Obsidian may freeze a few seconds at startup while the Omnisearch cache is loaded in memory.
Omnisearch is slow to index my PDFs and images
- The first time Omnisearch indexes those files, it needs to extract their text. This can take a long time, but will only happen once. This process is also resumable, so you can temporarily disable PDFs/images indexing, or close Obsidian without losing data.
Can I index PDFs/images on mobile?
- Not at the moment. On mobile devices, text extraction either doesn't work or consumes too much resources.
Omnisearch gives inconsistent/invalid results, there are errors in the developer console
- Restart Obsidian to force a reindex of Omnisearch.
- The cache could be corrupted; you can clear it at the bottom of the settings page, then restart Obsidian.
A query should return a result that does not appear.
- If applicable, make sure that "Ignore diacritics" is enabled.
- If you have modified them, reset weightings to their original values.
- Rewrite your query and avoid numbers and common words.
How do I highlight matches in search results?
See here.
I'm still having an issue
You can write your issue here with as much details as possible.
Omnisearch is licensed under GPL-3.
To all people who donate through Ko-Fi or Github Sponsors ❤