tinysearch/tinysearch: 使用Rus和Wasm构建的静态网站的微型全文搜索引擎


使用 Rust 和 Wasm 构建的静态网站的小型全文搜索引擎tinysearch ,tinysearch 是一个轻量级、快速、全文搜索引擎。它专为静态网站而设计。
tinysearch 是用 Rust 编写的,然后编译成 WebAssembly 以在浏览器中运行。它可以与静态站点生成器一起使用,例如Jekyll、 HugoZola、 CobaltPelican
技术原理:
tinysearch 是来自文章“使用布隆过滤器编写全文搜索引擎”的 Python 代码的 Rust/WASM 端口。它可以被看作是lunr.js和 elasticlunr的替代品,它们对于较小的网站来说太重并且加载了大量的 JavaScript。
幕后,它使用Xor 过滤器——一种用于快速逼近集合成员资格的数据结构,它比布隆过滤器和布谷鸟过滤器小。每篇博文都被转换成一个过滤器,然后使用bincode将其序列化为二进制 blob 。请注意,底层技术可能会发生变化。
限制

  • 只找到整个单词。因此,目前还没有搜索建议。这是减少内存使用的必要折衷。特里数据结构比异或过滤器大 10 倍左右。用于前缀搜索的紧凑数据结构的新研究可能会在未来解除这一限制。
  • 由于我们将所有文章的所有搜索索引捆绑到一个静态二进制文件中,因此我们建议仅将其用于中小型网站。每篇文章预计大约 2 kB 未压缩(压缩约 1 kb)。