Apache Solr
# Apache Solr

Solr (prononcé comme le mot solar en anglais) est une plateforme logicielle de moteur de recherche s'appuyant sur la bibliothèque de recherche Lucene, créée par la Fondation Apache et distribuée et conçue sous licence libre.

Solr utilise le langage Java et, jusqu'à la version 5.0, est exécuté par un conteneur de servlets, comme Tomcat, avant de devenir un standalone Java. Il communique avec le client à l'aide d'une interface de programmation en XML et JSON, généralement via le protocole HTTP.

## Histoire

Le développement de Solr démarre chez CNET Networks sous l'impulsion de Yonik Seeley (créateur du projet) pour améliorer les capacités de recherche de l'entreprise.

Début 2006, CNET Networks décide de rendre le code public et de le confier à la fondation Apache.

En septembre 2008, Solr 1.3 sort avec de nombreuses améliorations, dont la recherche distribuée et des améliorations des performances.

Le 10 novembre 2009, Solr sort en version 1.4 et apporte également un nombre important de nouveautés.

En mars 2011, les projets Lucene et Solr sont fusionnés. Le développement est commun, mais la distribution reste séparée. La numérotation des versions est identique sur les deux projets, Solr 3.1 vient juste après Solr 1.4.1. Avec la version 4.0, publiée en 2012, un tronc commun permet d'avoir une seule version. Elle apporte également des fonctionnalités supplémentaires pour la recherche distribuée. De plus, l'interface d'administration a été revue. La version 5.0, publiée en février 2015, apporte des nouveautés fonctionnelles telles que l'OCR (basé sur Tesseract intégré dans Tika 1.7), une meilleure simplicité d'utilisation grâce à de nouveaux scripts d'installation et de démarrage, ainsi que des améliorations liées à Solr Cloud.

En juillet 2019, l'équipe Apache Solr signale une vulnérabilité dans le code, corrigée un mois plus tard. En novembre de la même année, un chercheur en sécurité signale une autre faille importante pour Solr qui est utilisé par Adobe, Bloomberg, eBay, Goldman Sachs, Instagram et Netflix.

## Fonctionnalités

* API HTTP/XML, JSON et bibliothèques pour les langages de script Python et Ruby.
* Intégration des bases de données
* Utilise la bibliothèque Java Lucene pour la recherche plein texte
* Recherche à facettes
* Surlignage des termes trouvés
* Le langage de requêtage supporte les données structurées aussi bien que les données textes
* JSON, XML, PHP, Ruby, Python, XSLT, CSV, Velocity et des formats de sorties binaires en Java par HTTP
* Interface d'administration en HTML
* Réplication vers d'autres serveurs Solr - permet la scalabilité par rapport aux requêtes QPS
* Recherche distribuée par le Sharding (en) - Permet la scalabilité par rapport au volume de documents indexés
* Clusterisation des résultats de recherche basée sur Carrot2 (en)
* Mécanisme d'extension par greffon
* Flexibilité de la pertinence - boosts avec les function queries
* Mise en cache - requêtes, filtres et documents
* Embarquable dans une application Java
* Recherche géospatiale
* Gestion automatisée des clusters importants au travers de Apache ZooKeeper
* Regroupement des résultats par les valeurs d'un champ
* Auto-suggestion
