Au-delà des limites
 
 

Actu de la team solr DKD

Indexation de fichiers avec Solr

Avec le temps, l'indexation de fichiers avec Indexed Search s'est vue complexifiée, et restreinte à un petit nombre de formats de fichiers seulement. De plus, les autres intégrations de moteurs de recherche pour TYPO3 ne se sont à ce jour pas révélées fournir de bonnes solutions en matière d'indexation de fichiers.

Avec Apache Solr pour TYPO3, notre objectif est de résoudre ce problème.

De fait, nous avions déjà un outil d'indexation de fichiers implémenté depuis mi-mai 2010. A cette époque nous avions implémenté un indexeur de fichiers pour les besoins d'un projet client. En raison du manque de temps à ce moment-là, nous avions implémenté un indexeur de fichiers qui fonctionnait avec frontend indexing et des fichiers géré à l'aide de fileadmin uniquement.

Objectifs et cahier des charges

Ayant en vue de fournir la meilleure intégration de moteur de recherche pour TYPO3, nous avions cependant de plus hauts objectifs.
Notre but était de couvrir tous les aspects de l'indexation de fichiers dans TYPO3.

Cela implique la nécessité de gérer non seulement la méthode connue d'indexation par le frontend comme Indexed Search, la plupart des autres intégrations de moteurs de recherche, mais également la version publique de l'extension Solr, ainsi que la file d'attente d'indexation que nous avions inventée pour la version “VIP” (pour les sponsors) de notre extension.

Cela implique également la nécessité de prendre en charge l'indexation des fichiers, que ceux-ci soient gérés à l'aide du fileadmin ou du DAM. Chacune de ces combinaisons doit être prise en charge.

Défis

Nous savons tous combien TYPO3 est puissant et souple; cette souplesse impose cependant aussi un certain nombre de difficultés à l'indexation de contenu dans TYPO3 en général. Il est possible de faire afficher sur une page des éléments de contenu d'une autre page, il est possible de mettre sur une page des éléments de contenus à l'aide de TypoScript, etc. Il est donc difficile voire impossible de savoir quel contenu final sera rendu sur une page donnée sans afficher réellement ladite page.

Néanmoins, tout contenu affiché sur une page passe par content object rendering dans la classe tslib_cObj. Depuis TYPO3 4.4, nous disposons d'un hook dans la méthode d'initialisation de classe qui nous permet de suivre à la trace tout contenu affiché. Nous utilisons déjà ce hook dans la file d'attente d'indexation, pour déterminer quelles restrictions d'accès frontend user group sont apliquées aux éléments de contenu sur une page. Pour l'indexation de fichiers, nous allons tout simplement utiliser le même hook pour suivre quels contenus sont affichés sur une page.

Un autre problème, peut-être plus ardu encore, est la façon dont les fichiers – et plus spécifiquement les liens vers des fichiers – sont gérés sous TYPO3. Il existe une façon standard dont le core gère les liens vers des fichiers. Cependant, chaque extension fournissant des listes de fichiers fait cela de façon autonome et de manière non-standard, en particulier les extensions qui fournissent des téléchargements depuis le DAM.

 

Solutions

  1. Tout d'abord nous chargeons un indexeur de fichiers destiné à être exécuté à la fin du processus de rendu de la page, exactement comme notre indexeur de contenu Solr et Indexed Search.
  2. Un extracteur de fichiers pour les pages générées par TYPO3 est chargé pour être exécuté à chaque fois qu'une instance de tslib_cObj est créée.
  3. L'extracteur de fichiers transmet ensuite la liste d'éléments de contenu à un analyseur de contenu qui détecte les fichiers liés par l'élément de contenu fourni.
  4. L'extracteur de fichiers stocke de façon statistique tous les fichiers trouvés par les détecteurs de fichiers au cours du processus de rendu de la page.
  5. A la fin, quand notre indexeur de fichiers est appelé, il interroge l'extracteur de fichiers qui retourne tous les fichiers trouvés et les envoie dans la file d'attente d'indexation.

File d'attente d'indexation

La file d'attente d'indexation est un aspect très intéressant de l'indexeur de fichiers: jusqu'à présent tous les moteurs de recherche fournissant une indexation de fichiers sous TYPO3 indexaient les fichiers au moment où ceux-ci étaient trouvés sur une page. Résultat, cela ralentissait le rendu des pages et bloquait l'affichage jusqu'à ce que les fichiers soient indexés.
Selon la quantité de fichiers trouvés, leur taille et la capacité du serveur, ce processus d'indexation synchrone peut avoir des conséquences désagréables pour l'utilisateur.
Afin de résoudre ce problème, nous stockons les données sur les fichiers trouvés dans une file d'attente, laquelle peut ensuite être traitée par un planificateur de tâches asynchrone. Employer cette approche nous permet d'afficher la page sans en bloquer ni en ralentir le rendu, tout en indexant quand-même les fichiers liés dessus.

Pour résoudre le problème des extensions qui gèrent les liens fichiers chacune de façon différente, nous avons introduit le concept des détecteurs d'extension de fichier.

L'extension Solr inclura à la base un certain nombre de détecteurs de fichiers pour les extensions répandues, mais d'autres extensions peuvent également fournir leurs propres détecteurs de fichiers spécialisés.
Chaque détecteur de fichiers peut se voir attribuer certains types d'éléments de contenu, et des champs spécifiques d'un élément de contenu. Le détecteur des fichiers du dossier fileadmin par exemple, est affecté au suivi du type d'éléments de contenu “uploads” et analyse le champ media de ces même contenus. Quand on lui donne un contenu il est capable de retrouver les fichiers liés.

A la fin, pour effectivement extraire le contenu textuel d'un fichier, nous employons Apache Tika pour TYPO3.
 Tika est très bien parce qu'il reconnaît environ 1,200 formats de fichier et sait lire approximativement la moitié d'entre eux.
Cela nous permet d'indexer des fichiers PDF, des fichiers Microsoft Office y compris les nouveaux formats basés XML, des fichiers OpenOffice.org, et sensiblement tout autre format de fichier que l'on puisse rencontrer dans la vie de tous les jours. Cela n'avait pas été possible jusqu'à présent, dans la mesure où il fallait presque un service spécial d'extraction de texte pour chaque format de fichier. Avec Tika il est possible de tous les remplacer par une seule extension.

Plus tard notre intention est de partager notre experience de la gestion de fichiers sous TYPO3 avec le projet File System Abstraction Layer afin de rendre plus facile et constant le travail avec fichiers sous TYPO3.
Ces contributions bénéficieront non seulement à Apache Solr pour TYPO3, mais également à toute autre intégration de moteur de recherche et autres extensions ayant à gérer des fichiers.

Conclusion

L'indexation de fichiers dans TYPO3 présente des défis, et nous pensons leur avoir trouvé de bonnes solutions. A ce jour, nous avons implémenté le détecteur de fichiers pour le fileadmin et les fichiers sont ajoutés à la file d'attente d'indexation lors de l'indexation frontend.

La prochaine étape est de faire en sorte que la file d'attente d'indexation des pages indexe aussi les fichiers de la même façon, et d'ajouter la gestion du DAM. Avec les bases existantes, cela devrait s'avérer relativement aisé. De plus amples informations sont à venir, n'hésitez pas à nous soumettre toute question que vous pourriez avoir ainsi que votre avis sur notre approche.

 

Traduction de l'Anglais vers le Français du texte orginal rédigé par la Apache Solr Team at dkd.
Eventex est sponsor et partenaire du programme de développement de SOLR pour TYPO3, mené par DKD

 

Eventex news

Annecy accueillera encore une fois l'université d'été française de TYPO3, la fameuse « T3UNI11 » :...

plus...

La communauté TYPO3 Française est fière de vous présenter le nouveau site...

plus...

Intervention pour la communauté TYPO3 lors des hackweeks à Amiens.Le site officiel :...

plus...

Eventex focus projets

Notre module de géolocalisation permet, au sein de TYPO3 de créer des points sur une carte...

plus...

Notre étude de cas pour importer 210 000 pages html constituées d'environ 450 modèles types.

plus...

Le coin des experts TYPO3

La présentation d'Eventex sur Templavoilà Framework à l'université d'été de TYPO3

plus...

Conseils et bonnes pratiques pour la programmation de CSS

plus...

L'actu Web vu par nos experts

Pas d'article dans la liste.