5个版本 (稳定版)

2.0.0-beta.22023年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日

#416WebAssembly

Download history 18/week @ 2024-03-11 20/week @ 2024-03-18 65/week @ 2024-03-25 35/week @ 2024-04-01 53/week @ 2024-04-08 33/week @ 2024-04-15 118/week @ 2024-04-22 14/week @ 2024-04-29 6/week @ 2024-05-06 26/week @ 2024-05-13 36/week @ 2024-05-20 13/week @ 2024-05-27 31/week @ 2024-06-03 13/week @ 2024-06-10 12/week @ 2024-06-17 13/week @ 2024-06-24

每月71次下载
stork-search 中使用

Apache-2.0

165KB
4K SLoC

Stork

项目更新: 我在Stork上的工作即将结束。

感谢过去几年中喜欢使用Stork的每一个人!
-James


极快速度的网页搜索,专为静态站点设计。

Crates.io Codecov GitHub branch checks state

Stork是一个库,用于在网络上创建美丽、快速和精确的全文搜索界面。

它由两部分组成。首先,它是一个 命令行工具,用于索引内容和创建一个可以上传到Web服务器的搜索索引文件。其次,它是一个 JavaScript库,使用该索引文件构建一个交互式搜索界面,用户在输入时即可立即显示最佳搜索结果。

Stork是用Rust编写的,JavaScript库在后台使用WebAssembly。它很容易上手,并且可以轻松定制以适应您的需求。它非常适合Jamstack网站和个人博客,但可以在需要交互式搜索栏的任何地方使用。

James Little 开发

Gif of Stork in Action

入门

让我们将一个搜索框上线,以便在 联邦党人文集 的文本中进行搜索。

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-inputstork-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,您需要

  • Rust,使用稳定工具链
  • wasm-pack
  • yarn
  • Just如果您想使用与我相同的构建脚本(否则您可以阅读Justfile并手动运行脚本)

存储库的结构类似于典型的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