Tinysearch是一种轻巧,快速,全文搜索引擎。它是为静态网站设计的。
Tinysearch用Rust编写,然后编译到WebAssembly中以在浏览器中运行。
它可以与Jekyll,Hugo,Zola,Cobalt或Pelican等静态站点发电机一起使用。

我的博客的测试索引文件包含大约40个帖子创建的WASM有效载荷为99KB(49KB GZBIPPPECT,40KB BROTLI)。
比上面的演示图像小。是的。
Tinysearch是Python代码的Rust/WASM端口,该文章“使用Bloom过滤器编写全文搜索引擎”。它可以看作是Lunr.js和Elasticlunr的替代方法,它们对于较小的网站来说太重了,并加载了许多JavaScript。
在引擎盖下,它使用XOR过滤器 - 一个数据架构,用于快速近似设置会员资格,该构件比Bloom和Cuckoo过滤器小。每个博客文章都将转换为一个过滤器,然后使用Bincode将其序列化为二进制BLOB。请注意,基础技术可能会发生变化。
构建WASM模块需要WASM-PACK。安装它
cargo install wasm-pack要优化JavaScript输出,您还需要Terser:
npm install terser -g
如果您想使WebAssembly尽可能小,我们也建议您也安装Binaryen。在MacOS上,您可以使用Homebrew安装它:
brew install binaryen另外,您可以从发布页面下载二进制文件或使用OS软件包管理器。
之后,您可以安装Tinysearch本身:
cargo install tinysearch
一个包含索引内容的JSON文件作为输入。请查看示例文件。
JSON文档中的body场是可选的,可以跳过索引帖子标题。
创建索引后,您可以运行
tinysearch fixtures/index.json
这将创建一个WASM模块和JavaScript胶水代码,以将其集成到您的网站中。您可以从任何WebServer打开demo.html以查看结果。
例如,Python有一个内置的Web服务器,可用于快速测试:
python3 -m http.server
然后浏览到http://0.0.0.0:8000/demo.html进行演示。
您还可以在此处查看不同静态站点生成器的代码示例。
对于高级用法选项,运行
tinysearch --help
请检查在生产中托管WebAssembly所需的内容 - 您需要明确设置GZIP MIME类型。
如果您没有完整的生锈设置,也可以使用我们的夜间码头图像。
这是如何快速尝试使用Docker的Tinysearch:
# Download a sample blog index from endler.dev
curl -O https://raw.githubusercontent.com/tinysearch/tinysearch/master/fixtures/index.json
# Create the WASM output
docker run -v $PWD :/app tinysearch/cli --engine-version path= " /engine " --path /app/wasm_output /app/index.json默认情况下,使用了最新稳定的高山锈迹图像。每晚跑步
docker build --build-arg RUST_IMAGE=rustlang/rust:nightly-alpine -t tinysearch/cli:nightly .WASM_REPO :覆盖wasm-pack存储库WASM_BRANCH :覆盖要使用的存储库分支TINY_REPO :tinysearch的覆盖存储库TINY_BRANCH :覆盖Tinysearch分支机构为了将TinySearch集成到连续部署管道中,可以使用GitHub操作。
- name : Build tinysearch
uses : leonhfr/tinysearch-action@v1
with :
index : public/index.json
output_dir : public/wasm
output_types : |
wasm 以下网站使用Tinysearch:
您也在使用Tinysearch吗?在这里添加您的网站!
Tinysearch均在任何一个下获得许可
可以选择。