Bibliothèque de moteurs de recherche rapide rapide écrite en rouille
Si vous recherchez une alternative à Elasticsearch ou Apache Solr, consultez Quickwit, notre moteur de recherche distribué construit sur Tantivy.
Tantivy est plus proche d'Apache Lucene qu'à Elasticsearch ou Apache Solr dans le sens où il ne s'agit pas d'un serveur de moteur de recherche standard, mais plutôt d'une caisse qui peut être utilisée pour créer un tel moteur de recherche.
Tantivy est en fait fortement inspirée par la conception de Lucene.
Référence
La référence suivante décompose les performances de différents types de requêtes / collections.
Votre kilométrage variera en fonction de la nature des requêtes et de leur charge.

Des détails sur la référence peuvent être trouvés dans ce référentiel.
Caractéristiques
- Recherche de texte intégral
- Tokenizer configurable (entièrement disponible pour 17 langues latines) avec un support tiers pour chinois (Tantivy-Jieba et CANG-Jie), japonais (lindera, vaporetto et tantivy-tokenizer-tiny-segmenter) et coréen (lidera + lidera-ko-dic-builder)
- Fast (consultez le? Benchmark?)
- Minuscule heure de démarrage (<10 ms), parfait pour les outils de ligne de commande
- Scoring BM25 (le même que Lucene)
- Langage de requête naturelle (par exemple
(michael AND jackson) OR "king of pop" ) - Recherche de requêtes de phrase (par exemple
"michael jackson" ) - Indexation progressive
- Indexation multithread (indexation en anglais wikipedia prend <3 minutes sur mon bureau)
- Répertoire MMAP
- Compression entier SIMD lorsque la plate-forme / CPU comprend le jeu d'instructions SSE2
- Champs rapides U64, I64 et F64 à valeur unique et à plusieurs multivale
-
&[u8] Field Fields - Texte, i64, U64, F64, dates, IP, bool et champs hiérarchiques
- Magasin de documents compressés (LZ4, ZSTD, aucun)
- Requêtes de gamme
- Recherche à facettes
- Indexation configurable (fréquence du terme facultatif et indexation de position)
- Champ JSON
- Collecteur d'agrégation: Histogramme, seaux de portée, moyenne et statistiques de statistiques
- LogMergePolicy avec des suppressions
- API de chercheur de chercheur
- Logo au fromage avec un cheval
Non-fonctionnaires
La recherche distribuée est hors de l'étendue de Tantivy, mais si vous recherchez cette fonctionnalité, consultez Quickwit.
Commencer
Tantivy fonctionne sur la rouille stable et prend en charge Linux, MacOS et Windows.
- Exemple de recherche simple de Tantivy
- Tantivy-Cli et son tutoriel -
tantivy-cli est une interface de ligne de commande réelle qui vous permet de créer facilement un moteur de recherche, d'indexer des documents et de rechercher via le CLI ou un petit serveur avec une API REST. Il vous guide à travers le fait que le moteur de recherche Wikipedia soit opérationnel en quelques minutes. - Doc de référence pour la dernière version publiée
Comment puis-je soutenir ce projet?
Il existe de nombreuses façons de soutenir ce projet.
- Utilisez Tantivy et parlez-nous de votre expérience sur Discord ou par e-mail ([email protected])
- Signaler des bugs
- Rédiger un article de blog
- Aide à la documentation en posant des questions ou en soumettant des PR
- Contribuer du code (vous pouvez rejoindre notre serveur Discord)
- Parlez de Tantivy autour de vous
Code contributif
Nous utilisons le flux de travail de la demande GitHub Pull: référence à un ticket GitHub et / ou incluez un message de validation complet lors de l'ouverture d'un PR. N'hésitez pas à mettre à jour ChangeLog.md avec votre contribution.
Jetons
Lors de la mise en œuvre d'un tokenizer pour Tantivy, dépendez de la caisse tantivy-tokenizer-api .
Clone et construire localement
Tantivy se compile sur une rouille stable. Pour vérifier et exécuter des tests, vous pouvez simplement courir:
git clone https://github.com/quickwit-oss/tantivy.git
cd tantivy
cargo test
Les entreprises utilisant Tantivy








FAQ
Puis-je utiliser Tantivy dans d'autres langues?
- Python → Tantivy-py
- Ruby → Tantiny
Vous pouvez également trouver d'autres liaisons sur GitHub, mais elles peuvent être moins maintenues.
Quels sont les exemples d'utilisation de Tantivy?
- Seshat: une base de données de messages matriciels / indexeur
- Tantiny: minuscule recherche de texte intégral de Ruby
- LNX: moteur de recherche adaptable et tolérant à la faute de frappe avec une API REST
- Et plus!
En moyenne, à quel point Tantivy est-elle plus rapide par rapport à Lucene?
- Selon notre référence de latence de recherche, Tantivy est environ 2x plus rapide que Lucene.
Tantivy prend-il en charge l'indexation incrémentielle?
Comment puis-je modifier des documents?
- Les données de Tantivy sont immuables. Pour modifier un document, le document doit être supprimé et réindexé.
Quand mes documents seront-ils consultables lors de l'indexation?
- Les documents seront consultables après un
commit appelé IndexWriter . IndexReader existants devront également être rechargés afin de refléter les modifications. Enfin, les modifications ne sont visibles que pour Searcher nouvellement acquis.