Crawl Anywhere : un crawler Web pour Solr

solrDans le cadre du remplacement de Fast ESP par Solr pour le moteur Hurisearch, un crawler Web était nécessaire. Le but d’un crawler web est à partir d’une adresse Web de découvrir et récupérer toutes les pages d’un site. Un tour d’horizon de ce qui existe en la matière à fait ressortir une liste réduite de candidats : Nutch, Apache Droids et Heritrix.

  • Nutch (bien que faisant partie de la famille Lucene) ne semble de pas être un projet très actif et son intégration à Solr est peu aisée malgré quelques efforts récents.
  • Apache Droids semblait prometteur, mais lui non plus n’est plus actif depuis plus d’un an.
  • Heritrix est de loin de plus poussé de ces 3 crawlers et est un projet actif.

Heritrix semblait être le bon choix, mais entre autres lacunes, il ne possède pas d’interface Web d’administration et de monitoring « user friendly ». Ce point étant crucial dans le cadre du projet Hurisearch, nous avons décidé de développer notre propre crawler Web que nous avons baptisé : « Crawl Anywhere« . Ce nom peut paraitre prétentieux, mais pouvoir crawler tous types de sources est un réel objectif. De plus, trouver un nom disponible et encore plus un nom de domaine n’est pas chose aisé.

Voici donc un résumé de ce que permet Crawl Anywhere :

  • crawler tous types de sources : web, bases de données, systèmes de fichiers, CMS, …
    Chaque type de source est géré par un connecteur (source connector)
  • permet n’importe quelles actions avec les éléments crawlés : page web, document ou dossier d’un CMS, enregistrement d’une base de données, …
    Les éléments crawlés sont envoyés à un gestionnaire de documents (document handler). Pour une indexation par Solr, nous utilisons le « Solr document handler »
  • peut crawler plusieurs sources et éléments par source en même temps
  • est hautement configurable :
    – nombre de sources crawlées simultanément
    – nombre d’éléments par source crawlés simultanément
    – fréquence de recrawle en fonction du type d’élément
    – règles d’inclusion et d’exclusion en fonction du type d’élément
    – règles d’inclusion et d’exclusion en fonction du chemin
    – profondeur
    – …
  • est capable d’extraire le texte des éléments crawlés pour une grande variété de types mime. Pour cela, la librairie Tika (http://lucene.apache.org/tika/) et d’autres outils sont utilisés.
  • supporte le format Flash
  • fournit une interface Web d’administration et de monitoring (voir les copies d’écran)
  • est ouvert (au moyen des connecteurs et des gestionnaires de documents)

Crawl Anywhere est écrit en Java et est donc compatible Windows et Linux.

Une base de données MySQL est utilisée afin de mémoriser la référence de chaque élément crawlé (statut, date de dernier crawl, date de prochain crawl, type mime, …).

L’interface d’administration et de monitoring permet de suivre le travail du crawler ainsi que la gestion des différentes sources. Voici quelques copies d’écran de cette interface.

Monitoring du crawler :

crawler-status

Liste des sources :

crawler-sources-list

Détails d’une source :

crawler-source-details

Pour Hurisearch, Crawl Anywhere crawl 5400 sites Web sites qui représentent plus de 10 millions de pages indexées pas Solr. L’ensemble des sources peut être crawlé et indexé en 3 jours avec un serveur Linux Debian non dédié (Intel Core2Duo 2x 2.66+ GH équipé de 4 Go de Ram).

Si vous êtes intéressé par un crawler tel que Crawl Anywhere n’hésitez pas à nous contacter au moyen de ce formulaire.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *