Tantivy:Rust 写的高性能全文搜索引擎库

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 或不压缩
  • 范围查询和分面搜索
  • 聚合收集器,包含直方图、范围分桶、平均值和统计指标

README区域截图

语言绑定

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 是目前最成熟的选择。性能好,功能全,社区活跃,生态也在逐步完善。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值