Intégration française du moteur de recherche fulltext

Intégration française du moteur de recherche fulltext

par Valery Fremaux,
Nombre de réponses : 8

Le Google Summer Of Code de l'an dernier a été prolixe en développements intéressants fait par des étudiants du monde entier.

La fonction Global Search permet une recherche full text dans un certain nombre de modules (ressources, forums, wikis, etc. ). Cette fonction n'est pas encore en production chez Moodle HQ.

Après discussion avec Martin Dougamias, une première proposition d'intégration internationalisée va être proposée.

Cette version tourne en 1.8.1 correctement, avec quelques bugfixes au niveau XHTML strict, et la traduction des interfaces publiques du moteur de recherche du bloc de recherche et des résultats (pas de traduction pour les traces d'indexation réalisées par l'admin).

Ce module central ne fonctionne correctement que sous php5 (à cause de classes définies en PHP5) et MySQL 5.0 (usage des requêtes imbriquées).

Il faut installer à la main le modèle de données joint (MOODLE_INSTALL/search/db).

ATTENTION : Ce module du noyau (qui fonctionne bien) sur la base du moteur Lucene (adaptation de Zend Technologies pour PHP) est toujours considéré comme expérimental : Martin souligne encore des considérations non réglées de sécurité, les rôles n'étant pas clairement intégrés. D'après nos essais, le moteur "sort" tous les documents connus lors d'une recherche, même des documents non publiés, mais les liens générés ne permettent pas l'accès aux ressources protégées.  

Le fichier joint propose une refonte des codes du module de recherche et du bloc avec prise en charge de la langue française, et ajout de la recherche dans le module "techproject".

En étude à partir d'aujourd'hui :

l'extension de l'extraction du module "resource" à des contenus binaires du type fichiers pdf voire openOffice et peut-être même MSOffice si les librairies dispo nous permettent de pénétrer ces formats. (Toute info bienvenue à ce sujet). 

Moyenne des évaluations Utile (1)
En réponse à Valery Fremaux

Re: Intégration française du moteur de recherche fulltext

par Nicolas Martignoni,
Avatar Développeurs Avatar Développeurs de plugins Avatar Documentation writers Avatar Moodleurs particulièrement utiles Avatar Testeurs Avatar Traducteurs
Excellente nouvelle !
En réponse à Nicolas Martignoni

Re: Intégration française du moteur de recherche fulltext

par Valery Fremaux,

Quelques mots sur la recherche full-text

La recherche full-text, pour ceux qui ne connaissent pas l'expression, désigne une recherche basée sur l'intégralité des contenus d'une entité d'information. Elle s'oppose à une recheche par mots-clefs ou par méta-données, qui sont des informations supplémentaires apportées par les auteurs "au-delà" (meta) du contenu. Si ces deux dernières recherches ont le mérite d'être assez rapide dans des bases de données modernes, elle sont évidemment bien moins puissantes. La recherche full-text pose un problème au moment de l'indexation des ressources : il faut décortiquer tout le texte avec des algorithmes pour tirer les indicateurs qui permettent à une interrogation de se résoudre dans un temps raisonnable (le moins raisonnable est de parcourir linéairement l'ensemble des contenus à la recherche du bout de texte donné). C'est le but principal de l'extension search, actuellement présentée comme un module du noyau (racine de l'arborescence de Moodle) et basée sur l'utilisation du projet opensource Lucene (moteur de moteur de recherche).  

Avancement des travaux de reprise du Global Search

Intégration d'une indexation full-texte complète des PDF en bonne voie.

La librairie open-source xpdf permet l'extraction du texte et semble suffisamment portable pour assurer une continuté de service entre des implémentations Windows et des implémentations Linux.

Les prises en charge étudiées sont :

  • PDF : via pdftotext (xpdf) open source
  • TXT : directement, après éventuellement quelques filtrage (?)
  • HTML : directement, après élimination de toutes les balises
  • XML : directement, en ne retenant que les CDATA littéraux contenus de balises
  • PPT : un développement spécifique devrait permettre de récupérer les textes littéraux assez facilement
  • DOC (Word) : moins immédiat

Autres format : vous pouvez exprimez vos besoins ici. C'est pas dit qu'on ait une solution à chaque fois, mais on peut toujours tenter.

Autres problèmes liés à la recherche full text

Comme je l'ai signalé à l'équipe des HQ, le développement du Google Summer Of Code, s'il avance considérablement le travail, ne prend pas en charge des modules complexes où l'information contenue peut être accédée par plusleurs scénarios différents. (exemple d'un techproject, proposant de nombreux accès à l'information à travers des URL d'accès distinctes). Une modification plus profonde du code de la première équipe est nécessaire, dès qu'un module exprime son contenu dans un modèle de données à plusieurs entités d'information distinctes.  

  

En réponse à Valery Fremaux

Re: Intégration française du moteur de recherche fulltext

par Valery Fremaux,

Recherche full-text dans les PDF ... OK
Recherches full-text dans les PPT ... OK (versions 97 de PowerPoint, à tester avec des versions plus récentes - 2000, 2003, Office XP ? )

Recherches full-text dans des fichiers TXT ... OK (trivial) 
Recherches full-text dans des fichiers HTML ... OK (trivial) 
Recherches full-text dans des fichiers XML ... OK (trivial) 

Recherches full-text dans des fichiers DOC ... evaluation/intégration de doctotext (SILVERCODERS opensource) 

En réponse à Valery Fremaux

Re: Intégration française du moteur de recherche fulltext

par Valery Fremaux,

Dernières nouvelles de la recherche full text : ça marche !!

Aujourd'hui, le moteur de recherche effectue l'indexation complète des :

  • ressources fichier et non fichier
  • forums (sans attachements)
  • glossaires (sans attachements)
  • wikis (pages, sans fichiers attachés)
  • descriptions de projet (techproject) (un petit coup d'autopub !)

Le moteur effectue des requêtes dans tous ces documents et est capable de filter les résultats en fonction de la situation de l'utilisateur loggué. Ceci répond au cahier des charges de Martin en termes de sécurité.

Actuellement en travail :

  • Les bases de données sont en cours d'implémentation 
  • Les attachements des forums et des glossaires sont en cours d'étude
  • La fouille des devoirs et rendus de devoir (super pratique pour les détections de "pompe").

En projet différé :

  • Les attachements de wikis
  • La possibilité d'aggréger les résultats de recherche d'autres moodle sur le même réseau mnet (moteur au niveau réseau).

Le volume complet du moteur de recherche, librairies comprises est aujourd'hui > 10Mo. Je ne pourrai donc pas l'attacher sur le site.

En réponse à Valery Fremaux

Re: Intégration française du moteur de recherche fulltext

par Mohamed Koutheaïr KHRIBI,

Bonjour

Y a-t-il du nouveau concernant ce projet de moteur recherche fulltext ? existe-il une version en plugin à installer sur Moodle ? Est ce que vous pouvez SVP nous parler davantage sur la technique d'indexation utilisée des pages dynamiques (pages de forum, chat, wiki, etc) ?

En fait je suis entrain de tester le moteur opensource Nutch basé sur Lucène, j'essaye de faire avec, l'indextaion de Moodle, le principal porblème est celui d'indexer les pages dynamiques sans passser biensur par le rewriting ?

Merci de nous en parler davantage.

En réponse à Mohamed Koutheaïr KHRIBI

Re: Intégration française du moteur de recherche fulltext

par Valery Fremaux,

Désolé du délai de réponse à cette question, mais j'étais un peu pris ces derniers mois.

L'indexation ne se fait pas par page, mais par "composant". Chaque composant moodle (activité, ressource, essentiellement, mais également certains modules du noyau) définit des "documents indexables" à partir des contenus qu'il gère. Ce document construit à partir d'un ensemble de données issues des instances des composants dans moodle est alors soumis pour indexation. Chaque composant détermine également la forme de l'URL qui permet de retrouver l'information "dans son contexte" et fournit cette url au moteur. (Le moteur est également un Lucène embarqué, dans sa version Php fournie par le framework Zend).

La recherche s'effectue de façon classique, en soumettant les termes de recherche au "reverse index" sur les "fiches" ou proto-documents fournis par les composants.

Les résultats sont alors soumis à une politique locale d'accès pour chaque composant, qui, en fonction du statut de l'utilisateur effectuant la requête, doit déterminer si le résultat est visible ou non. L'ensemble des résultatzs visibles est ensuite organisé par pages.

Il appartient à chaque développeur de plugin de fournir un fichier search_document.php dans son implémentation, qui regroupe l'ensemble des fonctions nécessaires à tout ce travail.

En réponse à Valery Fremaux

Re: Intégration française du moteur de recherche fulltext

par Mohamed Koutheaïr KHRIBI,
Merci pour la réponse ..
Y a t il une version qui tourne ?
Bon travail
En réponse à Mohamed Koutheaïr KHRIBI

Re: Intégration française du moteur de recherche fulltext

par Mohamed Koutheaïr KHRIBI,
Je viens d'installer la version Moodle intégrant le module de recherche globale, la première remarque à avancer est que l'ajout de nouveau bloc ne se fait pas avec la version 5.2.3 de php, pour résoudre ça il faut revenir à une version antérieure telle que la version 5.2.9
La version du module de recherche globale intégrée à Moodle ne contient pas les convertisseurs dans le rep lib, il faut les chercher sur le cvs de moodle, là où on trouve uniquement les convertisseurs de pdf, doc et odt.
Les liens externes ne sont pas pris en charge lors de l'indexation, étant donné que c'est une option très importante à intégrer, une façon de faire est de procéder au téléchargement de ces ressources externes et de les indexer comme étant des physical_documents, à voir ...
Je crois aussi que les cours standardisés (lom, scorm, etc) sont pris en charge par l'indexeur ..
Quant à la recherche je crois savoir qua la formule tf.tdf est utilisée pour calculer les poids des termes ainsi que cosine similarity pour déterminer la similarité entre le vecteur requête et les vecteurs de termes de l'index.

Par contre, Avez vous une idée où on peut trouver les autres convertisseurs adaptés à ce module tels que xml, ppt, xls, html, swf, etc.

Merci