Typesense est un moteur de recherche rapide et tolérant aux fautes de frappe permettant de créer des expériences de recherche agréables.
Une alternative open source à Algolia et
Une alternative ElasticSearch plus facile à utiliser
Site Web | Documents | Feuille de route | Communauté Slack | Discussions communautaires | Gazouillement
Voici quelques démos en direct qui montrent Typesense en action sur de grands ensembles de données :
? Si vous préférez regarder des vidéos :
Vous ne voyez pas une fonctionnalité dans cette liste ? Recherchez notre outil de suivi des problèmes si quelqu'un l'a déjà demandé et ajoutez-y un commentaire expliquant votre cas d'utilisation, ou ouvrez un nouveau problème dans le cas contraire. Nous priorisons notre feuille de route en fonction des commentaires des utilisateurs, nous serions donc ravis d'avoir votre avis.
Voici la feuille de route publique de Typesense : https://typesense.link/roadmap.
La première colonne explique également comment nous hiérarchisons les fonctionnalités, comment vous pouvez influencer la priorisation et notre cadence de publication.
Nous serions ravis d'effectuer des comparaisons avec des ensembles de données plus volumineux, si nous pouvons en trouver de plus grands dans le domaine public. Si vous avez des suggestions concernant des ensembles de données structurés ouverts, veuillez nous en informer en ouvrant un numéro. Nous serions également ravis si vous pouviez partager des références à partir de vos propres grands ensembles de données. Veuillez nous envoyer un PR !
Typesense est utilisé par un large éventail d'utilisateurs dans différents domaines et secteurs verticaux.
Sur Typesense Cloud, nous effectuons plus de 10 MILLIARDS de recherches par mois. Les images Docker de Typesense ont été téléchargées plus de 12 millions de fois.
Nous avons récemment commencé à documenter qui l'utilise dans notre vitrine. Si vous souhaitez être inclus dans la liste, n'hésitez pas à modifier SHOWCASE.md et à nous envoyer un PR.
Vous verrez également une liste des logos d'utilisateurs sur la page d'accueil de Typesense Cloud.
Option 1 : Vous pouvez télécharger les packages binaires que nous publions pour Linux (x86_64 & arm64) et Mac (x86_64).
Option 2 : Vous pouvez également exécuter Typesense à partir de notre image Docker officielle.
Option 3 : Démarrez un cluster géré avec Typesense Cloud :
Voici un exemple rapide montrant comment créer une collection, indexer un document et le rechercher sur Typesense.
Commençons par démarrer le serveur Typesense via Docker :
docker run -p 8108:8108 -v/tmp/data:/data typesense/typesense:27.1 --data-dir /data --api-key=Hu52dwsas2AdxdE
Nous avons des clients API dans plusieurs langages, mais utilisons le client Python pour cet exemple.
Installez le client Python pour Typesense :
pip install typesense
Nous pouvons maintenant initialiser le client et créer une collection companies
:
import typesense
client = typesense . Client ({
'api_key' : 'Hu52dwsas2AdxdE' ,
'nodes' : [{
'host' : 'localhost' ,
'port' : '8108' ,
'protocol' : 'http'
}],
'connection_timeout_seconds' : 2
})
create_response = client . collections . create ({
"name" : "companies" ,
"fields" : [
{ "name" : "company_name" , "type" : "string" },
{ "name" : "num_employees" , "type" : "int32" },
{ "name" : "country" , "type" : "string" , "facet" : True }
],
"default_sorting_field" : "num_employees"
})
Maintenant, ajoutons un document à la collection que nous venons de créer :
document = {
"id" : "124" ,
"company_name" : "Stark Industries" ,
"num_employees" : 5215 ,
"country" : "USA"
}
client . collections [ 'companies' ]. documents . create ( document )
Enfin, recherchons le document que nous venons d'indexer :
search_parameters = {
'q' : 'stork' ,
'query_by' : 'company_name' ,
'filter_by' : 'num_employees:>100' ,
'sort_by' : 'num_employees:desc'
}
client . collections [ 'companies' ]. documents . search ( search_parameters )
Avez-vous remarqué une faute de frappe dans le texte de la requête ? Ce n'est pas grave. Typesense gère les erreurs typographiques dès le départ !
Une procédure étape par étape est disponible sur notre site Web ici.
Cela vous guidera tout au long du processus de démarrage d'un serveur Typesense, d'indexation des données et d'interrogation de l'ensemble de données.
Voici notre documentation officielle API, disponible sur notre site Web : https://typesense.org/api.
Si vous remarquez des problèmes avec la documentation ou la procédure pas à pas, veuillez nous en informer ou nous envoyer un PR ici : https://github.com/typesense/typesense-website.
Bien que vous puissiez certainement utiliser CURL pour interagir directement avec Typesense Server, nous proposons des clients API officiels pour simplifier l'utilisation de Typesense à partir de la langue de votre choix. Les clients API sont intégrés avec une stratégie de nouvelle tentative intelligente pour garantir que les appels d'API effectués via eux sont résilients, en particulier dans une configuration HA.
Si nous ne proposons pas de client API dans votre langue, vous pouvez toujours utiliser n'importe quelle bibliothèque client HTTP populaire pour accéder directement aux API de Typesense.
Voici quelques clients et intégrations contribués par la communauté :
Nous apprécions les contributions de la communauté pour ajouter davantage de bibliothèques clientes et d'intégrations officielles. Veuillez nous contacter à [email protected] ou ouvrir un numéro sur GitHub pour collaborer avec nous sur l'architecture.
Nous disposons également des intégrations de framework suivantes :
Nous avons une collection Postman gérée par la communauté ici : https://github.com/typesense/postman.
Postman est une application qui te permet d'effectuer des requêtes HTTP en pointant et en cliquant, au lieu d'avoir à les saisir dans le terminal. La collection Postman ci-dessus vous propose des modèles de requêtes que vous pouvez importer dans Postman, pour effectuer rapidement des appels API vers Typesense.
Vous pouvez utiliser notre adaptateur InstantSearch.js pour créer rapidement des expériences de recherche puissantes, complètes avec filtrage, tri, pagination et bien plus encore.
Voici comment procéder : https://typesense.org/docs/guide/search-ui-components.html
Elasticsearch est un logiciel volumineux, dont la configuration, l'administration, la mise à l'échelle et le réglage nécessitent des efforts non négligeables. Il vous propose quelques milliers de paramètres de configuration pour arriver à votre configuration idéale. Il est donc mieux adapté aux grandes équipes qui disposent de la bande passante nécessaire pour le préparer à la production, le surveiller régulièrement et le faire évoluer, en particulier lorsqu'elles ont besoin de stocker des milliards de documents et des pétaoctets de données (par exemple : des journaux).
Typesense est spécialement conçu pour réduire le « délai de mise sur le marché » pour une expérience de recherche agréable. Il s'agit d'une alternative légère mais puissante et évolutive qui se concentre sur le bonheur et l'expérience des développeurs avec une API propre et bien documentée, une sémantique claire et des paramètres par défaut intelligents afin qu'elle fonctionne bien dès la sortie de la boîte, sans que vous ayez à tourner de nombreux boutons. .
Elasticsearch fonctionne également sur la JVM, ce qui en soi peut représenter un effort considérable à régler pour fonctionner de manière optimale. Typesense, en revanche, est un binaire natif unique, léger et autonome, il est donc simple à configurer et à utiliser.
Voir une comparaison des fonctionnalités côte à côte ici.
Algolia est un produit de recherche en tant que service propriétaire et hébergé qui fonctionne bien lorsque le coût n'est pas un problème. D'après notre expérience, les sites et applications à croissance rapide se heurtent rapidement à des limites de recherche et d'indexation, accompagnées de mises à niveau coûteuses au fur et à mesure de leur évolution.
Typesense, quant à lui, est un produit open source que vous pouvez exécuter sur votre propre infrastructure ou utiliser notre offre SaaS gérée - Typesense Cloud. La version open source est gratuite (en plus bien sûr de vos propres coûts d’infrastructure). Avec Typesense Cloud, nous ne facturons pas par enregistrement ou par opération de recherche. Au lieu de cela, vous obtenez un cluster dédié et vous pouvez y envoyer autant de données et de trafic qu'il peut en gérer. Vous ne payez qu'un coût horaire fixe et des frais de bande passante, en fonction de la configuration que vous choisissez, similaire à la plupart des plates-formes cloud modernes.
Du point de vue du produit, Typesense est plus proche d’Algolia que d’Elasticsearch. Cependant, nous avons résolu certaines limitations importantes avec Algolia :
Algolia nécessite des index distincts pour chaque ordre de tri, qui sont pris en compte dans les limites de votre plan. La plupart des paramètres d'index tels que les champs à rechercher, les champs à facettes, les champs à regrouper, les paramètres de classement, etc. sont définis à l'avance lorsque l'index est créé plutôt que de pouvoir les définir à la volée au moment de la requête.
Avec Typesense, ces paramètres peuvent être configurés au moment de la recherche via des paramètres de requête, ce qui le rend très flexible et ouvre de nouveaux cas d'utilisation. Typesense est également capable de vous donner des résultats triés avec un seul index, au lieu de devoir en créer plusieurs. Cela permet de réduire la consommation de mémoire.
Algolia offre les fonctionnalités suivantes que Typesense ne possède pas actuellement : personnalisation et analyse de recherche basée sur le serveur. Pour l'analyse, vous pouvez toujours instrumenter votre recherche côté client et envoyer les métriques de recherche à l'outil d'analyse Web de votre choix.
Nous avons l'intention de combler cette lacune dans Typesense, mais en attendant, veuillez nous faire savoir si l'un de ces éléments constitue un obstacle à votre cas d'utilisation en créant une demande de fonctionnalité dans notre outil de suivi des problèmes.
Voir une comparaison des fonctionnalités côte à côte ici.
Un nouveau serveur Typesense consommera environ 30 Mo de mémoire. Au fur et à mesure que vous commencez à indexer des documents, l'utilisation de la mémoire augmentera en conséquence. Son augmentation dépend du nombre et du type de champs que vous indexez.
Nous nous sommes efforcés de conserver des structures de données en mémoire légères. Pour vous donner une idée générale : lorsque 1 million de titres Hacker News sont indexés avec leurs points, Typesense consomme 165 Mo de mémoire. La même taille de ces données sur le disque au format JSON est de 88 Mo. Si vous avez des chiffres provenant de vos propres ensembles de données que nous pouvons ajouter à cette section, veuillez nous envoyer un PR !
D'après notre expérience, les entreprises sont généralement préoccupées lorsque les bibliothèques qu'elles utilisent sont sous licence GPL, car le code de la bibliothèque est directement intégré dans leur code et conduira à des travaux dérivés et déclenchera la conformité GPL. Cependant, Typesense Server est un logiciel serveur et nous attendons des utilisateurs qu'ils l'exécutent généralement en tant que démon distinct et ne l'intègrent pas à leur propre code. La GPL couvre et permet généreusement ce cas d'utilisation (par exemple : Linux est sous licence GPL) . Désormais, c'est AGPL qui fait que les logiciels serveur accessibles via un réseau aboutissent à un travail dérivé et non à GPL. Et pour cette raison, nous avons choisi de ne pas utiliser AGPL pour Typesense.
Désormais, si quelqu'un apporte des modifications au serveur Typesense, la GPL vous permet en fait de conserver les modifications pour vous tant que vous ne distribuez pas le code modifié. Ainsi, une entreprise peut par exemple modifier le serveur Typesense et exécuter le code modifié en interne sans avoir à ouvrir la source de ses modifications, à condition qu'elle mette le code modifié à la disposition de toutes les personnes ayant accès au logiciel modifié.
Désormais, si quelqu'un apporte des modifications au serveur Typesense et distribue les modifications, c'est là que la GPL entre en jeu. Étant donné que nous avons publié notre travail auprès de la communauté, nous aimerions que les modifications des autres soient également ouvertes à la communauté dans le esprit d'open source. Nous utilisons la GPL à cet effet. D'autres licences permettraient de modifier notre travail open source, de le rendre fermé et de le distribuer, ce que nous voulons éviter avec Typesense pour la durabilité à long terme du projet.
Voici plus d'informations sur les raisons pour lesquelles la GPL, telle que décrite par Discourse : https://meta.discourse.org/t/why-gnu-license/2531. De nombreux points qui y sont évoqués nous interpellent.
Désormais, tout ce qui précède s’applique uniquement au serveur Typesense. Nos bibliothèques clientes sont en effet destinées à être intégrées au code de nos utilisateurs et utilisent donc la licence Apache.
En résumé, AGPL est généralement problématique pour les logiciels serveur et nous avons choisi de ne pas l'utiliser. Nous pensons que la GPL pour Typesense Server capture l'essence de ce que nous souhaitons pour ce projet open source. La GPL est utilisée avec succès depuis longtemps par des projets open source populaires. Nos bibliothèques sont toujours sous licence Apache.
Si vous avez des détails qui vous empêchent d'utiliser Typesense en raison d'un problème de licence, nous serons heureux d'explorer ce sujet plus en détail avec vous. Veuillez nous contacter.
Si vous avez des questions d'ordre général sur Typesense, si vous souhaitez nous dire bonjour ou simplement suivre, nous aimerions vous inviter à rejoindre notre communauté Slack publique.
Si vous rencontrez des problèmes, veuillez créer un problème GitHub et nous ferons de notre mieux pour vous aider.
Nous nous efforçons de fournir une bonne assistance via nos outils de suivi des problèmes sur GitHub. Cependant, si vous souhaitez bénéficier d'un accompagnement privé et prioritaire avec :
Nous proposons des options de support payant décrites ici.
Nous sommes une équipe réduite dont la mission est de démocratiser la recherche et nous prendrons toute l'aide possible ! Si vous souhaitez vous impliquer, voici des informations sur les domaines dans lesquels nous pourrions utiliser votre aide : Contributing.md
Si vous souhaitez recevoir des mises à jour lorsque nous publions de nouvelles versions, cliquez sur le bouton « Regarder » en haut et sélectionnez « Versions uniquement ». GitHub vous enverra ensuite des notifications ainsi qu'un journal des modifications à chaque nouvelle version.
Nous publions également des mises à jour sur notre compte Twitter concernant les versions et des sujets supplémentaires liés à Typesense. Suivez-nous ici : @typesense.
Nous publierons également des mises à jour sur notre communauté Slack.
Nous utilisons Bazel pour créer Typesense.
Typesense nécessite les dépendances suivantes :
Veuillez vous référer aux étapes de construction de CI pour le dernier ensemble de dépendances.
Une fois que vous les avez installés, exécutez ce qui suit à partir de la racine du dépôt :
bazel build //:typesense-server
La première build prendra un certain temps puisque d'autres bibliothèques tierces sont extraites et construites dans le cadre du processus de build.
© 2016-présent Typesense Inc.