crane search
1.0.0
我的博客文章:静态站点的 WebAssembly 搜索工具
Crane 是一个技术演示,其灵感来自 Stork,并使用几乎相同的配置文件设置。所以它也必须以鸟的名字命名。
我编写它是为了帮助我了解 WebAssembly 搜索工具的工作原理。请使用 Stork 代替。
起重机是两个程序。第一个程序扫描一组文档并构建有效的索引。 1MB 的文本和元数据被转换为 25KB 的索引(14KB gzip 压缩)。第二个程序是一个 Wasm 模块,它与一些 JavaScript 粘合代码和索引一起发送到浏览器。结果是一个即时搜索引擎,可以帮助用户在键入时查找网页。
访问演示
全文搜索引擎部分由 Artem Krylysov 的博客文章“让我们构建一个全文搜索引擎”中的代码提供支持。
没有做出任何努力来缩小 Wasm 二进制文件。请参阅减小 Wasm 文件的大小。
描述您的文档文件及其元数据。
[ input ]
files = [
{
path = " docs/essays/essay01.txt " ,
url = " essays/essay01.txt " ,
title = " Introduction "
},
# etc.
]
[ output ]
filename = " dist/federalist.crane "
将配置文件传递给构建脚本。每当您的文档发生更改时,您都需要一个新的索引,但您只需要构建一次 Wasm 模块。
./build-index.sh federalist.toml
./build-search.sh
将/dist
中的文件托管在您的网站上(例如wasm_exec.js
、 crane.js
、 crane.wasm
、 federalist.crane
)。然后你就走吧!
const crane = new Crane ( "crane.wasm" , "federalist.crane" ) ;
await crane . load ( ) ;
const results = crane . query ( 'some keywords' ) ;
console . log ( results ) ;
有关基本 UI,请参阅/docs
内的演示。
./gh-pages.sh