錆びて書かれた高速フルテキスト検索エンジンライブラリ
ElasticSearchまたはApache Solrの代替品を探している場合は、Tantivyの上に構築された分散検索エンジンであるQuickWitをご覧ください。
Tantivyは、Apache Luceneに近いElasticsearchやApache Solrよりも、既製の検索エンジンサーバーではなく、そのような検索エンジンの構築に使用できる木枠です。
Tantivyは、実際には、Luceneのデザインに強く触発されています。
ベンチマーク
次のベンチマークは、さまざまなタイプのクエリ/コレクションのパフォーマンスを分類します。
マイレージは、クエリの性質とその負荷によって異なります。

ベンチマークの詳細は、このリポジトリにあります。
特徴
- フルテキスト検索
- 中国語(Tantivy-Jieba and Cang-Jie)、日本(Lindera、Vaporetto、Tantivy-Tokenizer-Tiny-Segmenter)、韓国(Lindera + Lindera-Ko-Dic-Dic-Dic-Builder)のサードパーティのサポートを備えた構成可能なトークン剤(17のラテン語で利用可能)
- fast(?ベンチマークをチェックしてください?)
- 小さなスタートアップ時間(<10ms)、コマンドラインツールに最適です
- BM25スコアリング(ルーセンと同じ)
- ナチュラルクエリ言語(例
(michael AND jackson) OR "king of pop" ) - フレーズクエリの検索(
"michael jackson"など) - 増分インデックス
- マルチスレッドインデックス(インデックスイングリング英語Wikipediaはデスクトップで3分未満かかります)
- MMAPディレクトリ
- プラットフォーム/CPUにSSE2命令セットが含まれている場合、SIMD整数圧縮
- 単一の価値のある多面的なU64、I64、およびF64高速フィールド(LuceneのDOC値に相当)
-
&[u8]高速フィールド - テキスト、I64、U64、F64、日付、IP、ブール、および階層的ファセットフィールド
- 圧縮ドキュメントストア(LZ4、ZSTD、なし)
- 範囲クエリ
- ファセット検索
- 構成可能なインデックス作成(オプションの用語頻度と位置インデックス)
- JSONフィールド
- 集約コレクター:ヒストグラム、範囲バケット、平均、および統計メトリック
- deletesを備えたLogmergePolicy
- 検索者の暖かいAPI
- 馬との安っぽいロゴ
非食器
分散検索はTantivyの範囲外ですが、この機能を探している場合は、QuickWitをご覧ください。
はじめる
Tantivyは安定した錆で動作し、Linux、Macos、およびWindowsをサポートします。
- Tantivyの簡単な検索例
- Tantivy-Cliとそのチュートリアル-Tantivy
tantivy-cliは、REST APIを備えたCLIまたは小さなサーバーを介して検索エンジン、インデックス、および検索を簡単に作成できるようにする実際のコマンドラインインターフェイスです。ウィキペディアの検索エンジンを数分で稼働させ、実行することを妨げます。 - 最後にリリースされたバージョンのリファレンスドキュメント
このプロジェクトをサポートするにはどうすればよいですか?
このプロジェクトをサポートする方法はたくさんあります。
- Tantivyを使用して、Discordまたは電子メールでのあなたの経験について教えてください([email protected])
- バグを報告します
- ブログ投稿を書いてください
- 質問をしたり、PRを提出したりして、ドキュメントを手伝ってください
- コードを寄付する(Discord Serverに参加できます)
- あなたの周りのタンティビーについて話してください
コードを寄付します
GitHub Pull Request Workflowを使用します。Githubチケットを参照し、/またはPRを開くときに包括的なコミットメッセージを含めます。 changelog.mdをお気軽に更新してください。
トークンザー
Tantivy用のトークナー剤を実装するときはtantivy-tokenizer-api Crateに依存します。
クローンと局所的に構築します
Tantivyは安定したさびにコンパイルします。テストをチェックして実行するには、単純に実行できます。
git clone https://github.com/quickwit-oss/tantivy.git
cd tantivy
cargo test
Tantivyを使用している企業








よくある質問
他の言語でTantivyを使用できますか?
- Python→Tantivy-Py
- Ruby→Tantiny
Githubで他のバインディングを見つけることもできますが、それらはあまり維持されていない場合があります。
Tantivyの使用の例は何ですか?
- SESHAT:マトリックスメッセージデータベース/インデクサー
- Tantiny:Rubyの小さなテキスト検索
- LNX:REST APIを備えた適応可能なタイプミスの許容検索エンジン
- そしてもっと!
平均して、TantivyはLuceneと比較してどれくらい速いですか?
- 検索レイテンシベンチマークによると、TantivyはLuceneよりも約2倍高速です。
Tantivyはインクリメンタルインデックスをサポートしていますか?
ドキュメントを編集するにはどうすればよいですか?
- Tantivyのデータは不変です。ドキュメントを編集するには、ドキュメントを削除して再インネックスする必要があります。
インデックス作成中にドキュメントが検索可能なのはいつですか?
-
IndexWriterでcommitが呼び出された後、ドキュメントは検索可能になります。既存のIndexReaderリーダーは、変更を反映するためにリロードする必要があります。最後に、変更は新しく取得されたSearcherにのみ表示されます。