5个版本 (稳定版)
2.0.0-beta.2 | 2023年3月5日 |
---|---|
1.6.0 | 2023年1月30日 |
1.5.0 | 2022年6月1日 |
1.4.2 | 2022年3月23日 |
1.4.1 | 2022年3月13日 |
#416 在 WebAssembly 中
每月71次下载
在 stork-search 中使用
165KB
4K SLoC
Stork
项目更新: 我在Stork上的工作即将结束。 感谢过去几年中喜欢使用Stork的每一个人! |
极快速度的网页搜索,专为静态站点设计。
Stork是一个库,用于在网络上创建美丽、快速和精确的全文搜索界面。
它由两部分组成。首先,它是一个 命令行工具,用于索引内容和创建一个可以上传到Web服务器的搜索索引文件。其次,它是一个 JavaScript库,使用该索引文件构建一个交互式搜索界面,用户在输入时即可立即显示最佳搜索结果。
Stork是用Rust编写的,JavaScript库在后台使用WebAssembly。它很容易上手,并且可以轻松定制以适应您的需求。它非常适合Jamstack网站和个人博客,但可以在需要交互式搜索栏的任何地方使用。
由 James Little 开发
入门
让我们将一个搜索框上线,以便在 联邦党人文集 的文本中进行搜索。
在 https://stork-search.net 上查看这个演示的实时效果。
<!DOCTYPE html>
<html lang="en">
<head>
<title>Federalist Search</title>
</head>
<body>
<div class="stork-wrapper">
<input data-stork="federalist" class="stork-input" />
<div data-stork="federalist-output" class="stork-output"></div>
</div>
<script src="https://files.stork-search.net/stork.js"></script>
<script>
stork.register(
"federalist",
"http://files.stork-search.net/federalist.st"
);
</script>
</body>
</html>
步骤1:包含HTML
Stork与您页面上包含的现有HTML相结合。每个Stork实例都必须有一个输入钩子和一个结果列表;这两个元素应该放在一个包装器中,尽管包装器是可选的。
输入钩子应该具有 data-stork="federalist"
属性,其中 federalist
是您注册该搜索实例的名称。(这样,您可以在页面上有多个、独立的搜索框,它们都指向不同的实例。)它不必是 federalist
-- 您可以将其更改为任何您想要的。
结果列表应为一个空的<div>
标签,并带有属性data-stork="federalist-results"
。再次强调,这里你可以将federalist
替换为你想要的任何名称。
上述示例(stork-input
、stork-output
)中的类是为主题设计的。大多数Stork主题假设上述格式;主题文档会告诉你是否需要不同的格式。你也可以设计自己的主题,此时样式和类名由你自己决定。
步骤 2:包含 JavaScript
您需要包含stork.js
文件,您可以从Stork CDN加载或自己托管。这将加载Stork WebAssembly blob并创建Stork对象,这将允许注册和配置索引。
然后,您应该注册至少一个索引
stork.register("federalist", "http://files.stork-search.net/federalist.st");
您构建的搜索索引需要存储在某处,并具有公共URL。要注册
这将注册存储在http://files.stork-search.net/federalist.st
下的索引,名称为federalist
;HTML中的data-stork
属性将连接到这个名称。
最后,您可以设置一些配置选项,以确定搜索栏如何与索引和页面交互。
构建自己的索引
你可能不希望在您的网站上添加一个可以搜索联邦党人文档的界面。以下是如何使您的搜索栏成为您自己的。
要构建索引,您需要在您的计算机上安装Stork可执行文件,您可以在最新GitHub发行版中安装,或者如果您已安装Rust工具链,可以通过运行cargo install stork-search --locked
来安装。
搜索索引基于文档结构:您给Stork一个磁盘上的文档列表,并包含一些关于这些文档的元数据,然后Stork将根据这些文档的内容构建其搜索索引。
首先,您需要一个配置文件,该文件描述了,例如,该文件列表
[input]
base_directory = "test/federalist"
files = [
{path = "federalist-1.txt", url = "/federalist-1/", title = "Introduction"},
{path = "federalist-2.txt", url = "/federalist-2/", title = "Concerning Dangers from Foreign Force and Influence"},
{path = "federalist-3.txt", url = "/federalist-3/", title = "Concerning Dangers from Foreign Force and Influence 2"},
{path = "federalist-4.txt", url = "/federalist-4/", title = "Concerning Dangers from Foreign Force and Influence 3"},
{path = "federalist-5.txt", url = "/federalist-5/", title = "Concerning Dangers from Foreign Force and Influence 4"},
{path = "federalist-6.txt", url = "/federalist-6/", title = "Concerning Dangers from Dissensions Between the States"},
{path = "federalist-7.txt", url = "/federalist-7/", title = "Concerning Dangers from Dissensions Between the States 2"},
{path = "federalist-8.txt", url = "/federalist-8/", title = "The Consequences of Hostilities Between the States"},
{path = "federalist-9.txt", url = "/federalist-9/", title = "The Union as a Safeguard Against Domestic Faction and Insurrection"},
{path = "federalist-10.txt", url = "/federalist-10/", title = "The Union as a Safeguard Against Domestic Faction and Insurrection 2"}
]
此TOML文件描述了所有文档的基础目录,然后列出每个文档及其将在其中找到的Web URL,以及该文档的标题。
从那里,您可以运行以下命令来构建搜索索引
$ stork build --input federalist.toml --output federalist.st
这将创建一个名为federalist.st
的新文件。您可以使用相同的命令行工具搜索它
$ stork search --index federalist.st --query "liberty"
要在您的网站上嵌入Stork搜索界面,首先将索引文件上传到您的Web服务器,然后将其URL传递到您的网页的JavaScript中的stork.register()
函数。
进一步学习
您可以在项目的网站上阅读更多文档,了解更多有关定制的信息:https://stork-search.net。
开发
要构建Stork,您需要
存储库的结构类似于典型的Cargo工作区,并进行了一些修改。
- 《stork-*》目录包含Rust包。`
stork-cli
` 和 `stork-wasm
` 是顶层包;其他所有内容都是依赖项。 - 《js》目录包含JavaScript源代码。
- 《test-assets》目录包含Stork功能测试所需的二进制资产。
- 《local-dev》目录包含构建和运行用于本地开发的测试网页所需的配置文件、语料库和索引文件。
您可以使用Rust入口或JavaScript入口(以下列出了构建说明)来构建项目。构建项目后,您将看到另外三个目录:
- 《target》目录包含输出二进制构建工件。
- 《pkg》目录包含中间WASM构建工件。
- 《dist》目录包含Web的最终构建工件。
如果您对提取最终的Stork构建工件感兴趣,可以在使用`yarn build
`构建项目后提取以下文件:
/target/release/stork
/dist/stork.js
/dist/stork.wasm
为生产构建项目
- `
just build-indexer
`将构建索引器二进制文件到`target/release/stork
` - `
just build-js
`将构建WASM二进制文件和连接到`dist
`目录的JavaScript桥接代码 - `
just build-federalist-index
`将构建在整个项目中引用的`federalist.st`索引文件。它将输出到`local-dev/test-indexes/federalist.st`。
为开发构建项目
- `
just build-indexer-dev
`将构建索引器二进制文件 - `
cargo run -- <CLI OPTIONS>
`将运行索引器二进制文件 - `
just build-dev-site
`将构建WASM和JavaScript桥接代码,构建federalist.st索引,并打包开发站点 - `
./scripts/serve.sh
`将提供开发站点
请查看项目的Justfile以获取更多可用脚本。
依赖关系
~6–21MB
~247K SLoC