Dojo
最新
最佳
搜索
订阅
解道Jdon
架构设计
领域驱动
DDD介绍
DDD专辑
战略建模
领域语言UL
领域事件
商业分析
工作流BPM
规则引擎
架构师观点
数据工程
产品经理
系统思维
微服务
微服务介绍
微服务专辑
模块化设计
SOA
API设计
clean架构
SpringBoot
分布式事务
分布式架构
Kubernetes
DevOps
编程设计
GoF设计模式
模式专辑
面向对象
函数式编程
编程语言比较
编程工具比较
形式逻辑
前端编程
Reactive编程
Jdon框架
Rust语言
人工智能
Web3
模因梗
幽默梗
程序员吐槽
面试技巧
Java入门
数字化转型
认知偏差
道德经
更多话题
tinysearch/tinysearch: 使用Rus和Wasm构建的静态网站的微型全文搜索引擎
21-12-21
banq
使用 Rust 和 Wasm 构建的静态网站的小型全文搜索引擎tinysearch ,tinysearch 是一个轻量级、快速、全文搜索引擎。它专为静态网站而设计。
tinysearch 是用 Rust 编写的,然后编译成 WebAssembly 以在浏览器中运行。它可以与静态站点生成器一起使用,例如
Jekyll
、
Hugo
、
Zola
、
Cobalt
或
Pelican
。
技术原理:
tinysearch 是来自文章
“使用布隆过滤器编写全文搜索引擎”
的 Python 代码的 Rust/WASM 端口。它可以被看作是
lunr.js
和
elasticlunr
的替代品,它们对于较小的网站来说太重并且加载了大量的 JavaScript。
在
幕后,
它使用
Xor 过滤器
——一种用于快速逼近集合成员资格的数据结构,它
比布隆过滤器
和布谷鸟过滤器小。每篇博文都被转换成一个过滤器,然后使用
bincode
将其序列化为二进制 blob 。请注意,底层技术可能会发生变化。
限制
只找到整个单词。因此,目前还没有搜索建议。这是减少内存使用的必要折衷。特里数据结构比异或过滤器大 10 倍左右。用于前缀搜索的紧凑数据结构的新研究可能会在未来解除这一限制。
由于我们将所有文章的所有搜索索引捆绑到一个静态二进制文件中,因此我们建议仅将其用于中小型网站。每篇文章预计大约 2 kB 未压缩(压缩约 1 kb)。
ElasticSearch全文搜索
RUST语言
lucene全文搜索
WebAssembly简称WASM