51 lines
1.4 KiB
Markdown
51 lines
1.4 KiB
Markdown
---
|
||
name: Library/silverbulletmd/basic-search/PLUG
|
||
tags: meta/library
|
||
files:
|
||
- search.plug.js
|
||
share.uri: "https://github.com/silverbulletmd/basic-search/blob/main/PLUG.md"
|
||
share.hash: 59d1e9ad
|
||
share.mode: pull
|
||
---
|
||
# Basic Full Text Search
|
||
Formerly a built-in plug for SilverBullet, now installable separately for those who don’t want to (for whatever reason) use the far superior [Silversearch](https://github.com/MrMugame/silversearch) instead. Seriously, use Silversearch instead of this.
|
||
|
||
No? Alright then.
|
||
|
||
## Initial index
|
||
Perform a `Space: Reindex` after installing this plug.
|
||
|
||
## Commands
|
||
* `Search Space` (`Cmd-Shift-f`/`Ctrl-Shift-f`): performs a full text search across your space.
|
||
|
||
# Implementation
|
||
(part Lua, part Plug)
|
||
|
||
```space-lua
|
||
-- priority: 5
|
||
command.define {
|
||
name = "Search Space",
|
||
key = "Ctrl-Shift-f",
|
||
mac = "Cmd-Shift-f",
|
||
run = function()
|
||
local phrase = editor.prompt "Search for:"
|
||
if phrase then
|
||
editor.navigate("search:" .. phrase)
|
||
end
|
||
end
|
||
}
|
||
|
||
virtualPage.define {
|
||
pattern = "search:(.+)",
|
||
run = function(phrase)
|
||
-- These are implemented in the plug code
|
||
local results = search.ftsSearch(phrase)
|
||
local pageText = "# Search results for '" .. phrase .. "'\n"
|
||
for r in each(results) do
|
||
pageText = pageText .. spacelua.interpolate("* [[${r.id}|${r.id}]] (score ${r.score})\n", {r=r})
|
||
end
|
||
return pageText
|
||
end
|
||
}
|
||
```
|