项目更新:我正在结束与 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 >
Stork 挂钩到您页面上包含的现有 HTML。每个 Stork 实例都必须有一个输入钩子和一个结果列表;这两个元素应该放置在包装器中,尽管包装器是可选的。
输入挂钩应具有data-stork="federalist"
属性,其中federalist
是您注册该搜索实例的名称。 (这样,您可以在一个页面上拥有多个独立的搜索框,所有搜索框都指向不同的实例。)它不必是federalist
- 您可以将其更改为您想要的任何内容。
结果列表应该是一个空的<div>
标签,其属性data-stork="federalist-results"
。同样,在这里,您可以将federalist
更改为您想要的任何内容。
上面示例中的类( stork-input
、 stork-output
)是针对主题的。大多数 Stork 主题均采用上述格式;主题文档会告诉您是否需要不同的东西。您还可以设计自己的主题,此时样式和类名称由您决定。
您需要包含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 二进制文件和 Javascript 桥接代码到dist
目录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 以获取更多可用脚本。