Tantivy:Rust 写的高性能全文搜索引擎库
说到全文搜索引擎,多数人会想到 Elasticsearch 或 Apache Solr。但这两个都是开箱即用的服务端产品。如果你想要一个可以嵌入自己应用的搜索引擎库,Tantivy 值得看一看。

Tantivy 是一个用 Rust 编写的全文搜索引擎库,设计上大量参考了 Apache Lucene。它不是独立的搜索服务,而是一个可以集成到 Rust 项目中的 crate,适合需要自建搜索引擎的场景。
这个项目在 GitHub 上拿到了超过 15000 个 Star,被 Etsy、ParadeDB、Element.io 等多家公司在生产环境中使用。
性能方面
根据官方基准测试,Tantivy 的搜索延迟大约是 Lucene 的一半。它支持 SIMD 整数压缩,在包含 SSE2 指令集的 CPU 上运行效果更好。启动时间不到 10 毫秒,对于命令行工具或嵌入式场景很友好。
核心功能
- 全文搜索,支持自然语言查询,比如
(michael AND jackson) OR "king of pop" - 短语查询搜索
- BM25 评分算法,和 Lucene 一致
- 可配置的分词器,支持 17 种拉丁语言的词干提取,中文有 jieba 和 cang-jie 两个分词插件,日文和韩文也有对应方案
- 增量索引和多线程索引,官方称索引英文维基百科不到 3 分钟
- 支持文本、整数、浮点数、日期、IP、布尔值、层级分面等字段类型
- JSON 字段支持
- 压缩文档存储,可选 LZ4、Zstd 或不压缩
- 范围查询和分面搜索
- 聚合收集器,包含直方图、范围分桶、平均值和统计指标

语言绑定
Tantivy 本身用 Rust 编写,但社区提供了其他语言的绑定。Python 可以用 tantivy-py,Ruby 可以用 tantiny。如果需要分布式搜索能力,可以看同团队的 Quickwit,它基于 Tantivy 构建。
快速上手
Tantivy 可以在 stable Rust 上编译,支持 Linux、macOS 和 Windows。项目提供了基础搜索示例和 tantivy-cli 命令行工具,后者可以在几分钟内搭建一个维基百科搜索引擎。
基本用法很简单:引入 tantivy crate,定义 schema,创建索引,写入文档,执行搜索。完整的 API 文档可以在 docs.rs 上查阅。
应用场景
已经有一些基于 Tantivy 构建的项目:seshat 用它做 Matrix 消息索引,lnx 是一个带 REST API 的容错搜索引擎,Bichon 是用 Rust 写的邮件归档工具。Tantivy 在这些项目中承担了核心的索引和搜索功能。
对于需要在应用内嵌入全文搜索能力的 Rust 开发者来说,Tantivy 是目前最成熟的选择。性能好,功能全,社区活跃,生态也在逐步完善。
者来说,Tantivy 是目前最成熟的选择。性能好,功能全,社区活跃,生态也在逐步完善。
859

被折叠的 条评论
为什么被折叠?



