A high-performance document search engine built in Rust with WebAssembly support
3 months ago
- #Rust
- #SearchEngine
- #WebAssembly
- 采用Rust语言构建的高性能文档搜索引擎,支持WebAssembly。
- 结合FST(有限状态转换器)全文搜索与FSST压缩技术,实现高效存储和快速模糊匹配。
- 提供交互式演示,可搜索AG News数据集中的5万篇新闻文章。
- 性能指标:WASM索引大小11.48MB,Brotli压缩后5.20MB,单次查询速度约1-3毫秒。
- 核心功能包括快速模糊搜索、FSST压缩存储、RAKE关键词提取和WebAssembly支持。
- 提供独立CLI工具,无需Rust环境即可从文档集生成.wasm文件。
- 包含macOS/Linux和Windows系统的安装指南。
- 支持多平台:macOS(Intel/苹果芯片)、Linux(x64/ARM64)、Windows(x64/ARM64)。
- 源码编译需安装Rust、wasm-pack和Node.js。
- 文档预处理需创建包含详细信息的JSON文件。
- 索引阶段包含关键词提取、相关性评分、FST映射和FSST压缩。
- 嵌入阶段涉及解析WASM模块、扩展内存及添加索引数据段。
- 搜索阶段实现模糊匹配、分数累积和文档字符串解压。
- 使用fst、fsst-rs、rake、serde/postcard、wasm-bindgen等核心库。
- 实现亚毫秒级搜索、60-80%压缩率,支持延迟加载索引的即时启动。
- 技术灵感源自Algolia、TypeSense、Lunr.js、Stork Search和Tinysearch。
- 关键技术概念:有限状态转换器、RAKE算法和FSST压缩方案。