Projet de moteur de recherche : indexation terminée !
L’indexation des contenus est de loin la phase la plus compliquée de la création d’un moteur de recherche. Elle consiste à aller récupérer par technique de scrapping dans les pages des sites les informations qui pèsent dans l’algorithme de pertinence.
Le titre bien sûr. Ensuite, les métas données associées à l’article comme les tags et les catégories. Et puis, les h1, h2, h3, etc, sans oublier surtout les textes associés aux ancres ! Le sens naît du lien.
Toutes ces données doivent être nettoyées de toutes leurs scories et c’est là le plus long de l’affaire. Il m’aura fallu éliminer des caractères à l’image de cette fonction de ma classe principale indexing.class.php :
protected function clean_text($text) { $text=preg_replace('@(« ?| ?»| ?" ?|“ ?| ?”|--)@',' ',$text,-1); while(preg_match('@ @',$text)) { $text=preg_replace('@ @',' ',$text,-1); } return trim($text); }
Il m’aura fallu traiter les doublons, notamment au niveau des liens, de manière à minimiser la quantité de requêtes cURL pour le scrapping des pages.
J’ai eu ensuite à tester d’éventuels problèmes de verrous sur les tables utilisés par les différents process s’exécutant concomitamment.
J’ai encore un souci que je ne parviens pas à résoudre. Pour certains journaux, comme le New York Times, je suis hélas en erreur 403. Et je ne parviens pas à comprendre comment ils peuvent détecter que je scrappe leurs pages compte tenu des headers définis à l’identique de ceux d’un navigateur. Vais-je devoir me faire passer pour GoogleBot ou BingBot ?
Phase 3 : l’IHM
Après avoir défini l’algorithme de pertinence, il me faudra définir l’interface homme machine et les informations associées aux pages à afficher. J’ai accessoirement le nom de domaine à choisir.
Pour la volumétrie, je verrais tout à la fin, en test.