Apache Solr
Solr est un serveur de recherche qui reprend les fonctionnalités de Apache Lucene et les étend pour ajouter notamment :
- la recherche plein texte avancée
- des filtres de recherche et des facettes
- le surlignement des résultats
- la définition de type d'index pré-définis ou personnalisés via un fichier de configuration XML
- la recherche (géo)spatiale
- des suggestions de corrections orthographiques
- des suggestions de recherches connexes
- le regroupement de résultats
- un système de cache configurable
- une interface d'administration
Solr est optimisé pour les sites à trafic élevé et permet des recherches distribuées ainsi que la réplication de ses index.
Les données à indexer peuvent se trouver dans une base de données, des fichiers texte structurés ou non, accessibles en local ou via HTTP. Il est aussi possible d'indexer des documents 'riches' (PDF, traitement de texte, HTML, etc.) en utilisant Apache Tika.
Des champs dynamiques peuvent être utilisés pour créer des index à la demande.
Des listes de mots vides, de synonymes ou de termes protégés peuvent être définies dans des fichiers de configuration externes au schéma.
Une API de type REST permet d'envoyer des données (indexation) et de recevoir des données (recherche) via XML, JSON ou en format binaire.
Dans mon précédent labo, je l'ai intégré à un développement web en PHP, conjointement à une base de données MySQL et eXist-db pour accélérer les fonctionnalités de recherche du site l'Édition électronique des Dossiers de Bouvard et Pécuchet . Je l'ai aussi utilisé intégré à Drupal via le module apachesolr pour le Dictionnaire des journalistes (1600-1789).
SolR est également utilisé comme "moteur d'affichage" sur Calenda, calendrier des sciences humaines et sociales développé par le Centre pour l'édition électronique ouverte (Cléo), MySql n'est plus utilisé que pour ses fonctions relationnelles, des vues étant créées sous forme de document SolR et utilisées pour l'intégralité de l'interface publique. Signalons enfin que le moteur de recherche intégré au site de Plume repose sur Apache SolR.