19个版本 (稳定版)
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日 |
0.7.2 | 2020年6月19日 |
#4 in #索引文件
每月下载 197次
200KB
5K 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 发布版 中安装或通过运行 cargo install stork-search --locked
(如果您已安装 Rust 工具链)来安装。
搜索索引基于文档结构:您向 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 文件描述了所有文档的基础目录,然后列出每个文档以及该文档将被找到的网页 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](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
包含用于网络的最终构建工件
如果您对提取最终的 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 了解更多可用的脚本。
依赖项
~15–32MB
~451K SLoC