37个版本 (21个重大变更)

0.22.0 2024年4月12日
0.21.1 2023年10月26日
0.21.0 2023年9月1日
0.20.2 2023年6月12日
0.1.1 2016年8月14日

2数据库实现 中排名

Download history 47651/week @ 2024-04-27 51084/week @ 2024-05-04 56229/week @ 2024-05-11 57906/week @ 2024-05-18 57682/week @ 2024-05-25 123079/week @ 2024-06-01 114449/week @ 2024-06-08 112395/week @ 2024-06-15 155715/week @ 2024-06-22 134658/week @ 2024-06-29 121172/week @ 2024-07-06 121197/week @ 2024-07-13 124258/week @ 2024-07-20 124909/week @ 2024-07-27 107437/week @ 2024-08-03 71945/week @ 2024-08-10

每月447,341次下载
105 仓库中使用 (73 直接使用)

MIT 许可证

4MB
86K SLoC

Docs Build Status codecov Join the chat at https://discord.gg/MT27AG5EVE License: MIT Crates.io

Tantivy, the fastest full-text search engine library written in Rust

使用Rust编写的快速全文搜索引擎库

如果您正在寻找Elasticsearch或Apache Solr的替代品,请查看我们的分布式搜索引擎Quickwit,它建立在Tantivy之上。

Tantivy在本质上比Elasticsearch或Apache Solr更接近Apache Lucene,因为它不是一个现成的搜索引擎服务器,而是一个可以用来构建此类搜索引擎的crate。

实际上,Tantivy深受Lucene设计的启发。

基准测试

以下基准测试对不同类型的查询/集合的性能进行了分析。

您的里程数将根据查询的性质及其负载而有所不同。

有关基准测试的详细信息,请参阅此存储库

特性

  • 全文搜索
  • 可配置的词法分析器(17种拉丁语言支持词干提取)以及第三方对中文(tantivy-jiebacang-jie)、日语(linderaVaporettotantivy-tokenizer-tiny-segmenter)和韩语(《lindera + lindera-ko-dic-builder》)的支持
  • 快速(检查🐎 ✨ 基准测试 ✨ 🐎)
  • 极短的启动时间(<10ms),非常适合命令行工具
  • BM25评分(与Lucene相同)
  • 自然查询语言(例如:(michael AND jackson) OR "king of pop"
  • 短语查询搜索(例如:"michael jackson"
  • 增量索引
  • 多线程索引(在我的台式机上,索引英语维基百科需要< 3分钟)
  • Mmap目录
  • 当平台/CPU包含SSE2指令集时,使用SIMD整数压缩
  • 单值和多值u64、i64和f64快速字段(相当于Lucene中的doc值)
  • &[u8]快速字段
  • 文本、i64、u64、f64、日期、ip、bool和分层分面字段
  • 压缩文档存储(LZ4、Zstd、None)
  • 范围查询
  • 分面搜索
  • 可配置索引(可选词频和位置索引)
  • JSON字段
  • 聚合收集器:直方图、范围桶、平均值和统计指标
  • 带有删除的LogMergePolicy
  • 搜索器预热API
  • 带有马头的搞笑标志

非特性

分布式搜索不在Tantivy的范围内,但如果您正在寻找此功能,请查看Quickwit

入门指南

Tantivy运行在稳定的Rust上,并支持Linux、macOS和Windows。

我如何支持此项目?

有许多支持此项目的方法。

  • 使用Tantivy并告诉我们您在Discord或通过电子邮件([email protected])的经历
  • 报告错误
  • 撰写博客文章
  • 通过提问或提交PR来帮助文档
  • 贡献代码(您可以在我们的Discord服务器加入我们)
  • 在您周围谈论Tantivy

贡献代码

我们使用GitHub Pull Request工作流程:在打开PR时引用GitHub问题票和/或包含一个全面的提交信息。请随意更新CHANGELOG.md以包含您的贡献。

分词器

在为tantivy实现分词器时,请依赖于tantivy-tokenizer-api crate。

克隆并本地构建

Tantivy在稳定的Rust上编译。要检查并运行测试,您可以简单地运行

git clone https://github.com/quickwit-oss/tantivy.git
cd tantivy
cargo test

使用Tantivy的公司

Etsy  Nuclia   Humanfirst.ai Element.io Nuclia   Humanfirst.ai    Element.io

常见问题解答

我可以在其他语言中使用 Tantivy 吗?

您也可以在 GitHub 上找到其他绑定,但它们可能维护得较少。

Tantivy 的一些使用示例有哪些?

  • seshat: 矩阵消息数据库/索引器
  • tantiny: Ruby 的微小全文搜索引擎
  • lnx: 兼容性强、容错性好的带有 REST API 的搜索引擎
  • 以及 更多

与 Lucene 相比,Tantivy 平均快多少倍?

tantivy 支持增量索引吗?

  • 是的。

我如何编辑文档?

  • tantivy 中的数据是不可变的。要编辑文档,需要删除并重新索引该文档。

在索引过程中,我的文档何时可搜索?

  • 在调用 IndexWriter 上的 commit 后,文档将可搜索。现有的 IndexReader 也需要重新加载以反映更改。最后,更改仅对新获取的 Searcher 可见。

依赖关系

~17–30MB
~415K SLoC