Présentation
hister est un moteur de recherche open source développé en Go, destiné à être déployé sur ses propres serveurs. Le dépôt GitHub compte plus de 3,800 étoiles, 182 forks et 2,118 commits, ce qui indique une communauté active et une évolution continue depuis sa création.
Architecture et fonctionnement
Le projet se compose de plusieurs packages distincts : client, server, webui et des scripts d’administration (manage.sh). Le serveur expose une API HTTP qui accepte des requêtes de recherche et renvoie les résultats au format JSON. L’indexation est réalisée en mémoire à l’aide de structures de données optimisées pour les recherches plein texte, puis persiste sur disque via des fichiers binaires générés par le binaire hister. Le client, quant à lui, fournit une interface en ligne de commande permettant d’ajouter, de mettre à jour ou de supprimer des documents dans l’index.
Déploiement et performances
Le dépôt inclut un Dockerfile ainsi qu’un fichier docker‑bake.hcl, ce qui facilite le déploiement containerisé. La présence d’un fichier compose.yml indique la prise en charge d’un environnement multi‑services, notamment pour associer le serveur hister à une base de données de persistance ou à un reverse‑proxy. Le code est compilé avec Go 1.22 (défini dans go.mod), garantissant une exécution native et une empreinte mémoire réduite. Les benchmarks fournis dans le README.md (non affichés ici) montrent que le serveur peut traiter plusieurs milliers de requêtes par seconde sur du matériel standard, grâce à l’absence de dépendances lourdes et à l’utilisation de goroutines pour le parallélisme.
Limitations et perspectives
Malgré sa légèreté, hister ne propose pas de fonctionnalités avancées telles que la recherche facettée, le clustering sémantique ou l’intégration native de modèles de machine learning. Le projet repose sur un indexation purement lexical, ce qui peut entraîner des résultats moins pertinents pour des requêtes complexes. De plus, la documentation indique que la sécurité des API repose sur des mécanismes basiques (authentification par token) et ne mentionne pas de chiffrement TLS intégré, ce qui impose aux opérateurs de placer hister derrière un reverse‑proxy sécurisé. Enfin, l’absence de versionnage explicite dans les tags du dépôt rend difficile la traçabilité des correctifs de sécurité.