Documentation Technique Stage BoostMySales Dossier d’études techniques BoostMySales Présenté par David Bonnet Yannis Machouri Maxime Couteau Stanislas Leduc Pierre Freneau Stage de 2ème année BTS Services Informatiques aux Organisations option SLAM - 14 janvier 2013 – 1er mars 2013 Stage effectué à BoostMySales Immeuble le Mercure 10, Rue Gaëtan Rondeau 44 200 Nantes Page 1 sur 41 Documentation Technique Stage BoostMySales Page 2 sur 41 Documentation Technique Stage BoostMySales Page 3 sur 41 Documentation Technique Stage BoostMySales Remerciements Nous tenons à remercier avant tout notre tuteur de stage Mr Nabil Belcaid Le Guyader ainsi que son frère Mr Ali Belcaid pour leur patience ainsi que pour leurs compétences dans leur domaine spécifique. Nous remercions également nos professeurs d’informatique Mr Bourgeois et Mr Beauvais qui nous ont accompagnés et suivis pendant toute la durée de notre stage. Nous exprimons également notre reconnaissance au professeur d’informatique Mr Gaddhar qui nous a aidé à trouver ce stage ainsi que pour son soutien tout au long du projet. Page 4 sur 41 Documentation Technique Stage BoostMySales Tables des matières Introduction 1.1. Installation du serveur ……………………………………………………………...6 I. II. III. IV. V. VI. Prérequis Installation de HBase 0.90.6 Installation de Nutch 2.1 Installation de TomCat Installation de Solr 4.0 Intégration de Solr à Nutch 1.2. Installation de Grails.……………………………………………………………....11 I. II. Qu’est ce que Grails ? Installation 1.3. Développement d’une interface de tests…………………………………12 I. II. Pourquoi une interface de tests ? Captures d’écrans et extraits de codes 1.4. Intégration de Tika…………………………………………………………………15 I. II. III. Qu’est ce que Tika ? Implémentation de Tika dans Nutch Essais et tests de Tika 1.5. Création de la base MySQL………………………………………………………18 I. II. Création des tables pour stocker les paramètres de Nutch Contenus des tables 1.6. Intégration de Nutch, HBase dans Grails…………………………………24 I. II. Définition et exécution d’un crawl Visualisation d’un crawl Conclusion………………………………………………………………………………………..36 Ressources………………………………………………………………………………………..37 Page 5 sur 41 Documentation Technique Stage BoostMySales Introduction Dans le cadre de notre BTS SIO nous avons du trouver un stage en deuxième année qui correspondait à notre option le développement. C’est donc dans l’entreprise BoostMySales que nous avons fait notre stage avec pour objectif la création d’un moteur de recherche spécialisé dans la recherche de CV. BoostMySales est une jeune entreprise de démarchage téléphonique travaillant avec différents partenaires de l’assurance. Nos objectifs pour ce stage ont été divers et variés. Nous devions dans un premier temps nous familiariser avec plusieurs outils que nous ne maîtrisions pas. Nous devions également rendre compte de notre activité quotidiennement en fin de journée. Notre travail s’est scindé en plusieurs parties réparties sur les 5 membres de notre équipe de travail. En effet nous aborderons dans un premier temps l’installation du serveur. Puis nous continuerons sur l’installation du framework Grails. Nous expliquerons également pourquoi nous avons développé une interface de tests ainsi que l’implémentation de Tika dans Nutch. Ensuite, nous traiterons de la création de la base de données MySQL. Enfin nous terminerons par l’intégration de Nutch et HBase dans Grails. Page 6 sur 41 Documentation Technique Stage BoostMySales 1.1. Installation du serveur I. Prérequis A. Télécharger la machine virtuelle Télécharger la machine virtuelle déjà installée et configurée à l’adresse suivante : http://www.turnkeylinux.org/drupal7 B. Configurer la machine virtuelle La machine virtuelle doit avoir au moins 1 Go de RAM IP : 192.168.21.131 port http : 80 port sftp : 22 Passerelle : 192.168.21.1 C. Connecter les portables Installer Putty et se connecter sur le serveur à l’adresse 192.168.21.131 D. Installation de Java Installation de la commande apt $ apt-get install sun-java6-jdk sun-java6-jre Ouvrir le fichier .bashrc $ nano ~/.bashrc Ajouter la ligne suivante à la fin du fichier Export JAVA_HOME=/usr/lib/jvm/java-6-sun Vérifier l’installation de Java java -version Installation de Ant apt-get install ant II. Installation de HBase 0.90.6 A. Qu’est ce que HBase ? HBase est un système de gestion de base de données non-relationnelles distribuées, écrit en Java, disposant d'un stockage structuré pour les grandes tables. HBase est inspirée des publications de Google sur BigTable. Comme BigTable, elle est une base de données orientée colonnes. HBase est un sous-projet d'Hadoop, un framework d'architecture Page 7 sur 41 Documentation Technique Stage BoostMySales distribué. La base de données HBase s'installe généralement sur le système de fichiers HDFS d'Hadoop pour faciliter la distribution, même si ce n'est pas obligatoire. B. Installation de HBase Téléchargement de HBase 0.90.6 via http://mirrors.linsrv.net/apache/hbase/ Extraction du logiciel dans /opt/hbase906 Editer le fichier /opt/hbase906/conf/hbase-site.xml avec le contenu suivant : Editer le fichier /opt/hbase906/conf/hbase-env.sh et dé-commenter la ligne JAVA_HOME. Lancer HBase avec la commande : /opt/Serveur/hbase906/bin/start-hbase.sh III. Installation de Nutch 2.1 A. Qu’est ce que Nutch ? Nutch est une initiative visant à construire un moteur de recherche open source. Il utilise Lucene comme bibliothèque de moteur de recherche et d'indexation. En revanche, le robot de collecte a été créé spécifiquement pour ce projet. L'architecture de Nutch est hautement modulaire et permet à des développeurs de créer des plugins pour différentes phases du processus : récupération des données, analyse des documents, recherche, etc. Doug Cutting est l'initiateur et le coordinateur de ce projet. Nutch a été à la base du Framework Hadoop : l’initiative phare du Big Data B. Installation de Nutch Télécharger le paquet source (apache-nutch-2.1-src.zip) Décompressez dans le fichier opt Renommer le fichier apache : mv apache-nutch-2.1 nutch21 Placez vous dans le dossier nutch21 puis exécuter la commande: ant. Il y a maintenant un répertoire runtime/local contenant une installation de Nutch prête à Page 8 sur 41 Documentation Technique Stage BoostMySales l’emploi. Se placer dans le répertoire /nutch21/runtime/local/conf/ y copier le fichier /opt/hbase906/conf/hbase-site.xml Spécifier le back-end Gora dans nutch-site.xml : <property> <name>storage.data.store.class</name> <value>org.apache.gora.hbase.store.HBaseStore</value> <description>Dafault class for storing data</description> </property> S’assurer que les dépendances avec HBase et Gora (gora-hbase) soient disponibles dans ivy/ivy.xml : Décommenter la ligne suivante : <dependency org="org.apache.gora" name= "gora-hbase" rev= "0.2" conf= "*->default" /> S’assurer également que HBaseStore est bien défini par défaut dans gora.properties : gora.datastore.default=org.apache.gora.hbase.store.HBaseStore Ajouter également dans le fichier /conf/nutch-site.xml : <property/> <name>httpd.agent.name</name> <value>VSpider</value> </property> C. Utilisation de Nutch Nous avons 2 méthodes afin d’utiliser Nutch : Le mode dit «global» avec une seule commande (dépréciée au profit de la seconde) : Page 9 sur 41 Documentation Technique Stage BoostMySales Le mode «étape par étape» avec plusieurs commandes : IV. Installation de Tomcat Les applications comme nutch-gui sont des applications servlet qui requièrent un serveur TomCat pour tourner. Sous une base Debian, il suffit d’exécuter la commande suivante: apt-get install tomcat6admin tomcat6 Remplacer le contenu qui se trouve entre les balises <tomcat-users> par: V. Installation de Solr 4.0 A. Qu’est ce que Solr ? Solr est une plateforme logicielle de recherche s'appuyant sur le moteur de recherche Page 10 sur 41 Documentation Technique Stage BoostMySales Lucene, créée par la Fondation Apache et distribuée et conçue sous licence libre. Solr utilise le langage Java et est exécuté par un conteneur de servlets, comme par exemple TomCat. Il communique avec le client à l'aide d'une interface de programmation en XML et JSON, généralement via le protocole HTTP. B. Installation de Solr avec TomCat6 Télécharger Solr (version 4.0) Extraction des sources dans /opt/apache-solr-4.0 On crée le répertoire solr4 mkdir /opt/solr4 Copier example/solr dans /opt/solr4 Copier example/webapps/solr.war dans /opt/solr4 Editer dataDir dans le fichier de configuration /opt/solr/collection1/conf/solrconfig.xml : Créer un répertoire pour les données Solr et donner les droit pour le serveur tomcat6 : Configurer le nouveau contexte tomcat pointant vers nos fichiers Solr. Créer un fichier /etc/tomcat6/Catalina/localhost/solr.xml avec le contenu suivant : Redémarrer TomCat6. C. Vérification de l’installation de Solr Après avoir démarré la console d’administration de Solr, on peut accéder aux pages suivantes : 192.168.1.131:8080/solr/admin Page 11 sur 41 Documentation Technique Stage BoostMySales VI. Intégration de Solr à Nutch Après avoir installé correctement Nutch et Solr , Nutch récupère des données depuis les url données. Voilà les étapes pour déléguer la recherche à Solr, pour que les liens puissent être consultables : Copier le fichier shema.xml du dossier conf de Nutch vers le dossier conf de Solr cp nutch21/conf/shema-solr4.xml /opt/solr4/collection1/conf/schema.xml Ajouter la ligne de code suivante dans le document shema.xml : <field name=”_version_” type=”long” indexed=”true” stored=”true”/> Redémarrer TomCat6 Lancer la commande de l’index de Solr : /opt/nutch21/bin/nutch solrindex http://192.168.1.131:8983/solr -reindex 1.2. I. Installation de Grails Qu’est ce que Grails ? Grails est un framework open source de développement agile d'applications web basé sur le langage Groovy et sur le patron de conception Modèle-Vue-Contrôleur. Grails est basé sur cinq principes fondamentaux : II. Ne pas se répéter : les éléments de l'application ne doivent être qu'à un seul endroit. L'architecture MVC et la métaprogrammation en Groovy rendent cela possible. Convention plutôt que configuration : il est inutile de préciser des détails lorsqu'ils respectent des conventions établies. Grails exploite cela en proposant des comportements par défaut pour la plupart de ses fonctionnalités. Architecture orientée modèle : le point d'entrée et la pierre angulaire d'un développement Grails est la description formelle des classes représentant le domaine métier (Modèle conceptuel de données) ainsi que de leurs dépendances. Les couches techniques sous-jacentes sont générées. Prototypage : Les mécanismes de scaffolding offerts par le framework permettent de générer automatiquement un prototype d'application "présentable" aux utilisateurs dès la formalisation des classes de domaine. Exploiter la puissance de la JVM : les scripts Groovy étant compilés en bytecode Java, Grails exploite totalement la richesse et la puissance du monde Java. Installation A. Prérequis Avant d'installer Grails vous aurez besoin au minimum d'un kit de développement Java (JDK) version 1.6 ou supérieure installée. Ensuite, il faut télécharger une distribution Page 12 sur 41 Documentation Technique Stage BoostMySales binaire de Grails et décompresser le fichier zip obtenu dans l’emplacement de votre choix. B. Installation sous Linux Définissez la variable d'environnement GRAILS_HOME à l'emplacement où vous avez extrait le fichier zip, il faut le placer dans le fichier bashrc de votre profil : export GRAILS_HOME= chemin du repertoire de grails Ajoutez ensuite le répertoire bin à votre variable PATH de votre profil : PATH="$PATH:$GRAILS_HOME/bin" 1.3. Développement d’une interface de tests (Nutch Web/Core) I. Pourquoi une interface de tests ? A. Crawl (Shell Script) Malgré nos recherches et essais pour implémenter les API de Nutch 2.1 dans un programme java afin de pouvoir crawler, cela s’est soldé par un échec. En regardant le code du fichier Nutch nous nous sommes aperçu qu’il s’agissait d’un script shell qui suivait les paramètres donnés en arguments exécutant des classes JAVA prédéfinis. Nous avons développé un script shell qui exécute l’ensemble des commandes composant le crawl (inject, generate, fetch, parse, updatedb, solrindex). B. NutchWeb NutchWeb à été créé afin d’être l’interface web de test pour l'exécution d’un crawl puis pour NutchWeb Core. C’est une application J2E utilisant le langage JSP (Java Servlet Page). C. NutchWeb Core NutchWeb Core est une réécriture from scratch du script shell crawl. En effet afin de pouvoir un jour implémenter facilement les APIs officielles, nous avons décidé de créer une application JAVA qui permettrait d’éclater en méthodes les différents paramètres passés en arguments à Nutch. Au fur et à mesure cette application s’est étoffé. Aujourd’hui, cette application permet de faire le lien avec l’application web développée avec le framework Grails et Nutch. Page 13 sur 41 Documentation Technique Stage BoostMySales Ainsi on peut exécuter un crawl en utilisant les paramètres spécifiques à celui-ci qui sont enregistrés dans une base de données MySQL. II. Captures d’écrans et extraits de codes A. Nutch Web Capture d’écran de NutchWeb On peut apercevoir les deux boutons de test : Sauvegarder paramètre ⇒ Permet de configurer Nutch pour le crawl que l’on va exécuter Exécuter le crawl ⇒ Permet d’exécuter le crawl (en utilisant les méthodes de NutchWeb Core). B. Nutch Web Core La méthode Inject() Page 14 sur 41 Documentation Technique Stage BoostMySales Cette méthode permet d’injecter les urls dans la base de données crawldb. On voit ici que l’on exécute directement la commande nutch avec l’argument inject et un paramètre qui est le chemin vers le répertoire urls. Afin de garder le résultat de la commande ainsi que ses erreurs on utilise deux buffers: - inOut pour récupérer la sortie standard sans erreurs. - inErr pour récupérer la sortie des erreurs. Puis on utilise la méthode statique out.println afin que le résultat soit bien enregistré dans le fichier de log hadoop.log. (En effet, la méthode System.out.println permet d’afficher le résultat directement dans la console, ce qui n’est pas notre cas pour le JSP) Extrait de la classe Urls de NutchWeb Core La méthode regexUrls() permet d’adapter la mise en forme de la liste des urls avant écriture dans le fichier seed.txt. Le format de ce fichier est le suivant : Page 15 sur 41 Documentation Technique Stage BoostMySales De plus, on vérifie que tous les urls respectent bien la norme http://nomdusite, en effet si un site ne commence pas par http://, il y aura une exception qui sera levée, et le programme s’arrêtera. Cette méthode prend en argument un seul paramètre, la variable contenant la listes des urls. Tout d’abord on remplace les caractères d’espacement par un retour à la ligne, ensuite on manipule chaque url afin de savoir si celle-ci contient http://, si ce n’est pas le cas on le rajoute. Enfin on retourne un string regexUrls contenant la liste des urls formatées, prêt à être écrit dans le fichier seed.txt. Tous les codes seront visibles sur le projet final ou via des liens. 1.4. Intégration de Tika I. Qu’est ce que Tika ? Page 16 sur 41 Documentation Technique Stage BoostMySales Tika est un «parser», c’est une sorte de boîte à outils développée par la fondation Apache. Son but est de chercher et extraire les métadonnées ainsi que le contenu du texte à partir de différents documents en utilisant les bibliothèques existantes du parser. Parmi les formats de documents supportés par Tika on retrouve: etc. II. Document HTML, XML et ses formats dérivés Documents Microsoft Office Différents formats d'images, de vidéos et audio Différents formats d'archives (zip, jar, ...) Format de courriel mbox Implémentation de Tika dans Nutch Tika est un plugin de Nutch il suffit alors de préciser certaines configurations afin qu’il soit implémenté et utilisé par Nutch. Nutch utilise un parser par défaut qui ne fait pas tout ce que peut produire Tika. Modifier le fichier /opt/Serveur/nutch21/conf/parse-plugins.xml Changer l’id du plugin par parse-tika Pour que Nutch prenne en compte les changements, il suffit de faire un ant build de Nutch : Se placer dans le répertoire /opt/Serveur/nutch21 et taper la commander suivante : ant clean Enfin toujours dans le même répertoire, taper la commande ant build Page 17 sur 41 Documentation Technique Stage BoostMySales Maintenant Nutch est configuré pour fonctionner avec Tika. III. Essais et tests de Tika Pour voir si Tika fonctionne bien essayons de faire un crawl sur un site internet. Essayons avec apple.com Il faut ensuite se rendre dans l’interface de Solr afin de voir ce qui a été parsé http://192.168.1.131:8080/solr/#/ Vous devriez obtenir l’interface suivante : Se placer dans collection1 et cliquer sur Query, vous devriez être à présent sur cette page : Page 18 sur 41 Documentation Technique Stage BoostMySales Cliquer sur Execute Query et vous obtiendrez le résultat du crawl : 1.5. Création de la base MySQL Afin de paramétrer Nutch pour le crawl que l’on va exécuter, on stocke dans la base les quelques 124 paramètres par défaut que Nutch peut utiliser, ainsi l’utilisateur peut affiner l’exécution de son crawl. Pour cela on enregistre les paramètres modifiés dans une autre table. Enfin avant d’exécuter le crawl, on réécrit les fichiers de configuration de Nutch avec les paramètres dédiés à celui-ci. Voici le mcd suivant : Page 19 sur 41 Documentation Technique Stage BoostMySales La base de données crawl à été crée manuellement. I. Création des tables pour stocker les paramètres de nutch Les tables confnutch et defaultconfnutch ont également été crées manuellement. Les tables Instance, Parametres, Scenarios, Url, sont crées dynamiquement par le framework Grails (en mode débogage ces tables sont temporaires, elles sont supprimées à chaque instance de test, en mode production elles sont persistantes). La base de données ‘crawl’ se compose donc de 11 tables : 1. confnutch : Contient les paramètres de configuration de Nutch pour chaque instance 2. confregexurlnormalize : Contient les expressions régulières à utiliser 3. confsuffixurlfilter : Contient les suffixes de documents à inclure/ignorer 4. defaultconfnutch : Contient les 124 paramètres par défaut de Nutch 5. instance : Contient les instances de chaque scénario 6. mimetype : Contient les types de fichiers 7. parametre : Contient le batchid et la profondeur des liens pour chaque instance 8. scenario : Contient les scénarios 9. url : Contient les urls pour chaque instance 10. defaultconfregexnormalize : Contient les normes URLs par défaut Page 20 sur 41 Documentation Technique Stage BoostMySales 11. defaultconfsuffixurlfilter : Contient tous les suffixes de formats pris en charges par Nutch par défaut Voici comment cette base de données sera utilisée : Un scénario peut comporter une ou plusieurs instances: L’utilisateur choisira ensuite ses propres configurations, via les tables de configurations (confnutch, confsuffixurlfilter…) (descriptions détaillées dans le manuel utilisateur) Prenons un exemple simple : Nous voulons faire une recherche de CV (c’est un scénario). Dans cette recherche, je veux trouver des CV d’experts Java, de développeurs PHP ou bien d’ingénieurs spécialisés UNIX (ce sont des instances) Afin de remplir la table defaultconfnutch avec les 124 paramètres par défaut, nous créons un code php qui peut lire le fichier nutch-default.xml et insère les valeurs voulues dans cette table. La table confnutch contiendra les paramètres liés à l’instance et seront écrits dans le fichier de configuration nutch-site.xml afin d’exécuter le crawl avec ceux-ci. Ce procédé est le même pour les autres tables de configurations. A l’aide de chaque table, on peut créer les nouveaux fichiers de configurations que l’utilisateur veut. Chaque fichier de configuration, sera créé grâce au controller CrawlController.groovy contenu dans l’interface faite à partir du framework Grails : https://dev.balinor.fr/projects/integrategui/repository/revisions/master/changes/grailsapp/controllers/Scenario/BD/CrawlController.groovy Créer un fichier nutch-site.xml II. Contenus des tables Page 21 sur 41 Documentation Technique Stage BoostMySales confnutch : defaultconfnutch : confregexurlnormalize : Page 22 sur 41 Documentation Technique Stage BoostMySales confsuffixurlfilter : defaultconfregegexnormalize : Page 23 sur 41 Documentation Technique Stage BoostMySales defaultconfsuffixurlfilter : instance : Page 24 sur 41 Documentation Technique Stage BoostMySales mimetype : parametre : scenario : url : 1.6. I. Intégration de Nutch, HBase dans Grails Définition et exécution d’un crawl A. Un scénario Page 25 sur 41 Documentation Technique Stage BoostMySales ScénarioController.groovy B. Une instance C. Les paramètres Page 26 sur 41 Documentation Technique Stage BoostMySales On se connecte à la base de données, puis on sélectionne tous les paramètres de configuration de Nutch : Ensuite, on entre et on sauve les nouveaux paramètres : Pour les autres paramètres de configurations (suffixe, url…) il s’agit du même procédé. Pour voir l’intégralité du controller ParametreController.groovy : https://dev.balinor.fr/projects/integrategui/repository/revisions/master/changes/grailsapp/controllers/Scenario/BD/ParametreController.groovy II. Visualisation d’un crawl Page 27 sur 41 Documentation Technique Stage BoostMySales A. Qu’est ce que HBase ? HBase est un système de gestion de base de données non-relationnelles distribué, écrit en Java, disposant d'un stockage structuré pour les grandes tables. HBase est inspirée des publications de Google sur BigTable. Comme BigTable, c’est une base de données orientée colonnes. HBase est un sous-projet d'Hadoop, un framework d'architecture distribuée. La base de données HBase s'installe généralement sur le système de fichiers HDFS d'Hadoop pour faciliter la distribution, même si ce n'est pas obligatoire. B. Gestion des données dans HBase Les bases NoSQL sont arrivées avec leur cortège de nouveautés et pour certaines d'entre elles une notion héritée de BigTable : celle de base de donnée orientée colonne. Prenons un modèle très simple de donnée et essayons de le transposer dans un modèle "orienté colonne" : C. Utilisation des API Comme on peut le voir on est passé d'un modèle à 2 dimensions (ligne x colonne) vers un modèle où une valeur est accédée au travers de 2 coordonnées qui sont ici (ligne, colonne). Cette notion de coordonnées est importante si l'on veut concevoir une gestion des données avec une base orientée colonnes. La clé primaire dans la colonne Id est devenue ce que l'on appelle une row dans l'API de HBase. Page 28 sur 41 Documentation Technique Stage BoostMySales En réalité HBase ne va pas se compliquer la vie avec les notions de "ligne" et de "colonne" telles qu'on peut l'entendre dans le monde relationnel. Une donnée devient donc accessible grâce à des coordonnées. HBase stocke systématiquement une donnée avec l'ensemble de ses coordonnées. Avec ce modèle HBase n'est plus limité à un espace à 2 dimensions et elle en profite pour ajouter une notion de famille de colonne et un horodatage qui va permettre de gérer plusieurs versions d'une donnée : Voici le schéma de la table que nutch crée lors d’un crawl (fichier de configuration de gorahbase), la table webpage : <!-- fetch fields --> <field name="baseUrl" family="f" qualifier="bas"/> <field name="status" family="f" qualifier="st"/> <field name="prevFetchTime" family="f" qualifier="pts"/> <field name="fetchTime" family="f" qualifier="ts"/> <field name="fetchInterval" family="f" qualifier="fi"/> <field name="retriesSinceFetch" family="f" qualifier="rsf"/> <field name="reprUrl" family="f" qualifier="rpr"/> <field name="content" family="f" qualifier="cnt"/> <field name="contentType" family="f" qualifier="typ"/> <field name="protocolStatus" family="f" qualifier="prot"/> <field name="modifiedTime" family="f" qualifier="mod"/> <!-- parse fields --> <field name="title" family="p" qualifier="t"/> <field name="text" family="p" qualifier="c"/> <field name="parseStatus" family="p" qualifier="st"/> <field name="signature" family="p" qualifier="sig"/> <field name="prevSignature" family="p" qualifier="psig"/> <!-- score fields --> <field name="score" family="s" qualifier="s"/> Page 29 sur 41 Documentation Technique Stage BoostMySales <field name="headers" family="h"/> <field name="inlinks" family="il"/> <field name="outlinks" family="ol"/> <field name="metadata" family="mtdt"/> <field name="markers" family="mk"/> D. Intégration de HBase dans Grails 1. Utilisation des API de Hbase Une application a été développée pour se connecter à HBase avec grails. Actuellement il n’existe aucun plugin pour la version 0.90.6. Le but de cette application est de récupérer les données de la table webpage en toute facilité grâce au framework Grails. Voici le diagramme Objet de cette application : Pour mieux comprendre le fonctionnement de cette application voici un exemple précis : Connexion Page 30 sur 41 Documentation Technique Stage BoostMySales Liste d’URL d’un crawl Scan d’une URL Récupération de lien d’une URL 2. Intégration Page 31 sur 41 Documentation Technique Stage BoostMySales L’interface développée sous grails permet de visualiser les données crawlées par nutch2.1 avant l’indexation dans Sorl4. Cet outils a seulement un but de vérification des données contenues dans la table webpage afin de décider si le crawl sera indexé ou non. Afin d’être au plus près d’une bonne explication prenons un exemple précis (chaque capture d’écran sera accompagnée de sa partie de code associée) : Connexion à la base de données grâce à ConnectHbase.groovy Liste des scénarios avec leur instance Modèle : Page 32 sur 41 Documentation Technique Stage BoostMySales Controller : Vue : Page 33 sur 41 Documentation Technique Stage BoostMySales Liste des URLs du crawl Modèle : Controller : Page 34 sur 41 Documentation Technique Stage BoostMySales Vue : Détails de la ligne Modèle : Page 35 sur 41 Documentation Technique Stage BoostMySales Controller : Vue : Page 36 sur 41 Documentation Technique Stage BoostMySales NOTE DU DERNIER RDV TELEPHONIQUE DU 1ER MARS : Code inclus dans ConnectHbase.groovy : Page 37 sur 41 Documentation Technique Stage BoostMySales Conclusion Ce stage a parfaitement répondu à nos attentes. Il nous a permis de découvrir de nouvelles technologiques que nous ne connaissions pas. Nous pensons également que les cours d’informatique qui nous ont été enseignés cette année ont eu une grande importance au bon déroulement du stage. En effet, ces notions de base nous ont permis de mieux appréhender le projet. Nous avons développés de nouvelles compétences grâce à celui-ci très enrichissant intellectuellement et humainement. C’était un domaine tout à fait inconnu pour nous et nous sommes fiers du rendu final de notre moteur de recherches. Ce stage nous a vraiment fait apprendre de nouveaux outils de programmation dont de nouveaux framework, un nouveau langage de programmation, à travailler en équipe, à rendre compte de nos avancées mais surtout d’évoluer positivement dans notre domaine de développement. Page 38 sur 41 Documentation Technique Stage BoostMySales Ressources : 1. Documentations HBase : http://hbase.apache.org/book.html http://www.siteduzero.com/informatique/tutoriels/creez-votre-application-webavec-java-ee http://www.siteduzero.com/informatique/tutoriels/apprenez-a-programmer-enjava http://grails.org/doc/2.2.0/ http://hbase.apache.org/apidocs/index.html 2. Documentations Nutch : http://nutch.apache.org http://nutch.apache.org/wiki.html#Nutch+Wiki http://nutch.apache.org/apidocs-2.1/index.html http://wiki.apache.org/nutch/NutchTutorial https://github.com/apache/nutch http://fr.wikipedia.org/wiki/Nutch http://today.java.net/pub/a/today/2006/01/10/introduction-to-nutch-1.html http://lucene.472066.n3.nabble.com/nutch-crawling-with-java-not-shellscripttd617212.html http://code.google.com/p/daicaheb/source/browse/trunk/nutch-trunkbb/src/test/org/apache/nutch/fetcher/TestFetcher.java?spec=svn77&r=77 http://cmusphinx.sourceforge.net/2012/06/building-a-java-application-with-apachenutch-and-solr/ http://arifn.web.id/blog/2010/11/29/simple-crawling-with-nutch.html http://wiki.apache.org/nutch/RunNutchInEclipse http://wiki.apache.org/nutch/JavaDemoApplication http://techvineyard.blogspot.fr/2010/12/build-nutch20.html#Running_Nutch_classes_from_Eclipse http://notebyxz.blogspot.fr/2012/10/building-java-application-with-nutch-20.html http://java.dzone.com/articles/using-lucene-grails http://leanjavaengineering.wordpress.com/2012/02/24/using-lucene-in-grails/ http://armelnene.blogspot.fr/2009/11/develop-your-own-google-with-apache.html http://fr.slideshare.net/abial/nutch-as-a-web-data-mining-platform 3. Documentations Tika : http://tika.apache.org http://tika.apache.org/1.3/index.html http://tika.apache.org/1.3/parser.html https://tika.apache.org/1.3/parser_guide.html Page 39 sur 41 Documentation Technique Stage BoostMySales http://stackoverflow.com/questions/ 4. Documentations Grails : http://grails.org/doc/2.2.0/ http://www.grails.org/community http://www.grails.org/plugins/ http://grails.org/doc/latest/guide/gettingStarted.html#requirements 5. Outils : - Netbeans - Plate-forme de collaboration (chili project) - Base de données noSQL (Hbase) - Base de données relationnelle (MySQL) - Langage Java, Groovy (FrameWork Grails) et SQ - Windesign - Wiki Page 40 sur 41 Documentation Technique Stage BoostMySales Page 41 sur 41