Alfresco est une plateforme collaborative, orientée historiquement sur un cœur GED (Gestion Electronique de Documents), qui vise à augmenter la productivité d’une entreprise. A cette fin, les documents sont dématérialisés et indexés au sein d’Alfresco et permet ainsi une recherche des documents indexés.Un des piliers d’Alfresco est son moteur de recherche, par défaut Lucene. Ce dernier, performant et écrit en Java, offre les possibilités suivantes :

  • Indexation full texte
  • Recherche par mots-clés
  • Requêtes personnalisées de recherche via son API.

Lucene conserve toute sa pertinence dans un emploi basique mais certaines possibilités lui manquent pour un usage plus avancé.

Fort de ce constat, un nouveau moteur de recherche a été ajouté à Alfresco depuis la version 4 : Solr.

Ainsi, cet article se propose de présenter les avancées liées à l’implémentation de Solr dans Alfresco et de dresser le cadre de son déploiement au sein d’Alfresco.

1. Solr : Définition

Solr est une plateforme de recherche open source écrit en Java par la fondation Apache et est basée sur le moteur de recherche Lucene.

Il étend et optimise les fonctionnalités de Lucene :

  • Avec la mise à disposition des web services (REST) d’indexation des données et de recherche, les applications codées dans un langage autre que Java peuvent utiliser le moteur de recherche Solr grâce à la communication effectuée par le biais du protocole HTTP et de l’XML. Solr étend donc les possibilités d’interopérabilité d’Alfresco.
  • Avec le support du multi-core (support de plusieurs index de Lucene), il est possible de réindexer un core sans trop affecter les performances des autres. Solr optimise donc la gestion en parallèle de différents cores (index).

2. Solr & Alfresco

2.1 Quel package/version de Solr faut-il utiliser pour Alfresco ?

Alfresco supporte seulement la version 1.4 de Solr qui est une version modifiée pour Alfresco. Notons qu’une version téléchargeable sur le site officiel de Solr ne fonctionnera pas avec Alfresco.

Cela vient du fait que cette version Solr 1.4 est la seule pouvant être récupéré sur le site du support d’Alfresco :

  • les modèles (types de document) : cela facilite l’indexation des différents champs
  • les permissions : cela permet de filtrer les permissions directement dans la requête (et donc éviter un passage en base de données)
  • les chemins des contenus : cela accélère les requêtes de type « PATH »

2.2 Architecture Solr et Alfresco

Le schéma ci-dessous détaille l’interconnexion et les différentes actions réalisées entre Alfresco et Solr.

maj

Explications :

1) Un utilisateur lance une recherche dans Alfresco

2) Alfresco crée une requête HTTPS vers Solr (web service de recherche)

3) Solr renvoie la réponse à Alfresco sous forme XML

4) Toutes les 15 secondes, Solr demande via une requête à Alfresco les mises à jour potentiel du “Repository” (tâche cron paramétrée, traitement asynchrone)

5) Alfresco envoie à Solr les changements :

  • des nouveaux contenus
  • des modifications de propriétés
  • des modifications de permissions
  • des changements au niveau des modèles d’Alfresco

Comme on peut le voir, dans Alfresco, Solr possède 2 cores :

  • SpacesStore core : indexe les contenus qui sont présents dans Alfresco
  • Archive core : indexe les contenus qui ont été supprimés d’Alfresco

2.3 Solr : Application WEB

Solr est accessible via une application web qui peut être utilisée dans différents cas particuliers :

  • Installation et configuration de SOLR et Alfresco sur le même serveur d’application
  • Installation et configuration de SOLR et Alfresco sur le même serveur mais sur des serveurs d’application (et donc des JVM) différentes
  • Installation et configuration de SOLR et Alfresco sur différents serveurs
  • Installation et configuration de SOLR sur plusieurs serveurs (CLUSTERING)

cluster

2.4 Solr et sa console d’administration

Solr possède une console d’administration Web ou JMX qui permet de :

  • tester des requêtes directement sur le « SpacesStore » ou l’ « ArchiveStore »
  • lancer manuellement la ré-indexation
  • voir le statut des index

Il est aussi possible de de suivre l’indexation des contenus via Alfresco share.

3. Récapitulatif

Les avantages de Solr :

  • Plus performant que Lucene (connaissance des permissions, modèles…)
  • Plus évolutif
  • Solr est “scalable” contrairement à Lucene
  • Pas de duplication d’index sur les serveurs en cluster
  • Administration
  • Charge du moteur de recherche déporté par rapport au serveur Alfresco

Les inconvénients de Solr :

  • La configuration de Solr est plus complexe que Lucene :
    1. au niveau de la génération et la configuration du keystore (clef privée/public)
    2. la configuration dans Alfresco
    3. les configurations des différents cores
  • Temps de latence de 15 secondes entre la mise à jour des données et le résultat de la recherche, les données mise à jour ne sont pas affichées pendant cette période. « Eventually consistent ». Solr est donc asynchrone.
  • L’intégration de Solr avec Alfresco n’est pas parfaite mais s’améliore.
  • L’impossibilité d’utiliser une autre version de Solr que celle supportée.
  • Un coût supplémentaire, dans le cas d’un serveur Solr déporté.

4. Conclusion

Le Solr personnalisé pour et par Alfresco rend indéniablement ce dernier plus complet. D’une part, cela s’explique par une interopérabilité accrue en raison de l’utilisation du protocole de communication universel HTTP et du langage informatique répandue XML. On constate donc une amélioration des performances au niveau de la recherche avec l’ajout de nouvelles fonctionnalités (Web services, Multi-core, Administration…). On peut alors comprendre aisément qu’Alfresco recommande Solr en production.

L’ensemble de ces éléments rend possible un déploiement sous diverses formes (configuration en cluster par exemple) de Solr, afin d’apporter une réponse personnalisée et personnalisable face aux attentes clients. Néanmoins, ce dernier point souligne aussi la complexité inhérente à la configuration d’Alfresco intégrant Solr et le coût variable qui résulte des diverses configurations. Ce challenge constitue un axe majeur d’améliorations et de réflexions.