Alors que je cherchais un moteur de recherche pour mon site HAbeTT.org, je me suis mis à me poser des question sur la nécessité d'indexer le contenu d'un site internet de taille moyenne.
Si l'on veut avoir un moteur de recherche sur son site, une première solution est de se reposer sur un site classique type google et de circonscrire la recherche à son propre site. Pour google, la syntaxe de la recherche à effectuer est mot site:www.habett.com. Limiter la recherche à son propre site peut être délicat ou incertain (de moins en moins avec les moteurs plus puissants apparus ces dernières années tels Inktomi ou Google). Une fois passé cet obstacle, ou peut se retrouver avec des resultats corrects mais avec une mise en page forcément non intégrée à votre site et des problèmes liés à la mises à jour de l'indexation sur lesquels nous allons revenir.
On peut aussi recourir à des sites dédiés aux recherches locales type comme atomz (gratuit sous certaines conditions), mais moins puissant que synomia, et il y en a beaucoup d'autres. Vous lui indiquez votre site, il l'indexe à votre demande et quand vous invoquez ce site dans les conditions données, vous obtenez des résultats sous une forme en général personalisable parmis différentes présentations. Les pages de votre site sont alors indexées sur un serveur distant sur lequel les recherches sont traitées. Cette solution est meilleure car vous obtenez un petit contrôle sur l'aspect et surtout, vous avez la main sur le calendrier des mises à jour de l'index. Le fait d'appeller un site extérieur peut être occulté par des frames en html si le service en question vous laisse le faire. Cette situation inplique une sur-utilisation de la bande passante lors des indexations par le site distant qui doit inspecter tout le site à chaque fois. Cette solution est opportune quand vous disposez d'un hébergement basique, sans contenu dynamique type cgi/php/asp ou que vous voulez disposer d'une technologie extérieure sans trop vous poser de questions.
Si vous disposez d'un hébergement complêt, ici commencent les choses intéressantes. On trouve à de nombreux endroits des scripts perl/php/... qui vous permettent d'avoir votre propre moteur de recherche. Dans mon cas, je me suis dit que je pouvais peut-être faire ce moteur moi même. Viens alors le moment de la reflexion sur la technologie à adopter.
J'avais l'à priori qu'il fallait distinguer les étapes d'indexation et de recherche. Cependant, pour commencer, j'ai écrit un moteur de recherche direct, à la volée. Mon site ayant environ 800 fichiers html, et dans la mesure où je voulais un représentation spéciale des résultats (lien, citation contextuelle, affichage des méta informations, affichage d'une îcone particulière), je m'attendais à des performances pitoyables.
Après quelques temps de programation en perl, sans gros efforts d'optimisation, sur un serveur largement mutualisé, sans utiliser le grep du système (pour mon affichage particulier), j'ai obtenu des performances tout à fait surprenantes. Une recherche parmi 800 fichiers html perdus dans un paquet de plus de 3000 fichiers, plusieurs méga octets de données, s'effectue en bien moins d'une demi seconde de temps serveur !
Vu les performances, je me suis posé des questions sur l'opportunité d'aller plus loin et de mettre en place un moteur de recherche classique avec indexation préalable du contenu des pages. Bref, faut-il indexer ?
Les performances étant au rendez vous pour un site moyen, les avantages de la non indexation apparaissent rapidement. Pas d'indexation, c'est une liberté importante liée à l'absence de maintenance. Même si l'indexation est planifiée, par un cron tab par exemple, cela reste une opération intermédiaire qui consome aussi du temps processeur et implique que la prise en compte des modifications ne se fait pas en temps réel.
Perl est un language interprété donc mois rapide qu'une solution en c/c++. Le recours à un grep système permetrait d'aller aussi encore plus vite. Un meilleur programeur ferai évidement beaucoup mieux que moi. Certes ce raisonement repose sur le fait que les machines serveurs deviennent très puissantes. Il peut appraître fallacieux d'adopter une solution théoriquement et technologiquement inférieure au simple regard des performances mais l'évolution de l'informatique est ainsi et cela ne va pas changer.
Une fois de plus je me retrouve dans la technodicée du simple contre le meilleur. Bref, dans mon cas, pour ce site, le choix est fait, je n'indexe pas. Mon choix aurait été tout à fait différent si j'avais voulu mettre en oeuvre des stratégies de tolerance textuelle.