Comment créer un moteur de recherche interne?
Posté le : 06-10-2009 | Par : Florent Goossens | Catégorie : Moteurs de recherche, Programmation, Trucs et astuces
Mots-clefs :Algorithme, Moteurs de recherche
4
En tant que propriétaire de site Internet, ou en tant que grand curieux, répondre à cette question peut avoir un intérêt certain. En effet, de nombreux moyens permettent de mettre en place un moteur de recherche Interne sur son site pour aider les visiteurs à trouver l’information qu’ils recherchent. Malheureusement, rares sont les solutions vraiment intéressantes (faible pertinence, diffusion de publicité, etc.) pour cet outil central qu’est le moteur de recherche. C’est pourtant une partie stratégique d’un site Internet, souvent délaissée. Alors, êtes-vous prêt à mettre les mains dans le cambouis et à développer votre propre moteur de recherche?
Pourquoi créer son moteur de recherche interne soi-même?
Tout simplement parce que vous avez une maîtrise totale de votre moteur. Vous déterminez vous-même comment pondérer les facteurs de pertinence d’une page, vous avez un contrôle sur l’indexation du site, et vous pouvez mettre en place de nombreuses fonctionnalités annexes (des suggestions de recherche par exemple).
Quelle technologie utiliser?
Pour des raisons d’accessibilité, de performance et de confidentialité de votre script, il est préférable de se tourner vers un langage orienté serveur (comme PHP ou ASP.Net par exemple). PHP a l’avantage d’être abondamment documenté sur Internet. Les exemples qui suivent dans cet article seront centrés sur PHP 5.
Quelle architecture mettre en place?
Quel que soit le nombre de pages de votre site, il est important de constituer un index dans lequel vous stockerez le contenu de toutes vos pages. Sans cet index, cela reviendrait à solliciter toutes les pages au moment de la recherche, et le temps de recherche serait trop important.
Vous devez donc mettre en place une application qui aura pour objectif de:
- Extraire le contenu des pages
- Effectuer le traitement de données nécessaire
- Stocker les données sur votre site
Extraire le contenu des pages:
C’est la première étape, vous devez extraire le contenu textuel de vos pages. En PHP, plusieurs fonctions vous permettent de réaliser cette tâche.
Par exemple, pour récupérer les balises META d’une page, vous pouvez utiliser la fonction suivante:
$key = $tags['keywords'];
$desc = $tags['description'];
$auteur = $tags['author'];
Je vous renvoie vers cet article qui vous en dit plus sur la manière d’extraire le contenu d’une page web ou d’un des éléments de cette page.
Effectuer le traitement de données nécessaire:
Les contenus extraits correspondront au code HTML de vos pages, ainsi de nombreux éléments sont totalement inutiles. PHP possède une fonction très pratique vous permettant de supprimer toutes les balises HTML de votre page (vous perdez cependant le texte présent dans les attributs ALT des images par exemple).
Par contre, utiliser cette fonction revient à supprimer les éventuelles balises STYLE et SCRIPT de la page… mais pas leurs contenus. Veillez à bien supprimer l’intérieur de ces balises avant de supprimer les balises elles-mêmes:
$texte = preg_replace(’@<style[^>]*?>.*?</style>@si’, », $texte);
Pour plus de facilité, vous pouvez aussi remplacer tous les caractères accentués par des non accentués (la même opération aurait été réalisée sur la requête de l’internaute pour faciliter les comparaisons):
Avec tous ces remplacements, il est intéressant de supprimer ensuite tous les espaces inutiles:
Veillez également à ce que l’encodage des pages soit identique à l’encodage de l’index (qui peut être un fichier XML, une base MySQL). Si besoin est, PHP possède des fonctions pour encoder des chaînes de caractères en UTF-8 ou en ISO.
Stocker les données sur votre site
Une fois que votre moteur a extrait et traité les données, il faut les stocker sur votre site. Vous pouvez les stocker dans une base de données MySQL ou encore les structurer dans un fichier XML. Cette étape correspond donc à la création de l’index de votre moteur de recherche, qui sera sollicité à chaque requête formulée par un internaute.
Bien entendu, si vous modifiez les pages de votre site, vous devrez relancer l’indexation de manière à mettre votre index à jour.
Déterminer quelle page est la plus pertinente sur une requête
Votre index est constitué, la prochaine étape est d’élaborer un script qui sera en mesure de déterminer, en fonction de la requête formulée par l’internaute, quelle page présente dans la base est la plus pertinente et légitime.
Par exemple, si le mot clé est situé dans le <title> ou dans l’URL, on suppose que ce terme est significatif par rapport au contenu de la page. Il en est de même si le terme est placé en début de page. Dans le cadre d’une recherche avec plusieurs mots clés, la proximité de ces termes dans le texte est un facteur de poids. Une multitude de paramètres peuvent être considérés… et je vous recommande tout simplement de consulter cet article qui recense les principaux facteurs influençant le positionnement d’un site dans les moteurs de recherche. Et oui, pourquoi ne pas s’inspirer du fonctionnement d’un moteur de recherche tel que Google pour développer son moteur de recherche interne? (dans les grandes lignes bien entendu, vous n’allez pas non plus transformer votre salle de bain en data-center et mettre en place un réseau d’ordinateurs qui se répartiront le travail lors d’une requête sur votre moteur).
Une fois que le moteur aura classé les pages entre elles, il ne lui reste plus qu’à présenter les résultats à l’internaute.
Optimiser le temps de recherche
Pour optimiser le temps de traitement de l’information, et générer des résultats plus rapidement, il est intéressant de procéder à un premier traitement en aval, lors de l’indexation. Par exemple, vous pouvez mettre en place deux index avec un index de mots clés et un index de documents, ce qui vous permet d’ignorer les pages ne contenant pas les termes recherchés et ne pas perdre de temps. Je vous recommande la lecture de cette page qui traite du fonctionnement de Google (qui fonctionne en réalité avec plusieurs index).
Vous pouvez également faire des calculs de densité de mot clé à cette occasion et le stocker dans votre base, et lors de la recherche vous n’aurez plus qu’à récupérer les informations déjà calculées.
Personnaliser son moteur de recherche
Vous pouvez ensuite laisser libre cours à votre imagination. Le moteur de recherche étant une section du site particulièrement stratégique, il est intéressant de se pencher sur les différents moyens permettant d’améliorer l’expérience utilisateur sur le moteur.
Par exemple, dans le cadre de ma société, je développe un moteur de recherche pour les sites de mes clients avec des suggestions de recherche. Les suggestions sont structurées en XML et affichées en fonction de la requête de l’internaute. Vous pouvez aussi aller plus loin en basant votre suggestion en fonction du territoire sémantique (si je puis m’exprimer ainsi) des pages sélectionnées. Ceci permettra d’accompagner l’internaute pendant sa recherche, et l’aider à trouver l’information désirée en l’incitant à reformuler sa recherche si sa requête initiale n’a donné aucun résultat.
Attention à la sécurité de votre moteur de recherche!
Pour finir, n’oubliez pas que comme toute application web, votre moteur de recherche sera vulnérable aux attaques des hackers. Il est donc vivement conseillé de se sensibiliser aux rudiments de la sécurité des applications web de manière à vous prémunir de certains risques. Par exemple, le simple fait de placer le code suivant sur votre page vous expose à un risque de sécurité:
Ce script a pour vocation d’afficher sur la page de résultat la requête formulée par l’internaute (issue du champ ‘query’ de votre formulaire, qui a transité via la méthode GET). Si vous ne prenez pas de mesures pour protéger votre code, celui-ci sera vulnérable à une injection XSS (injection de code dans votre page, pouvant être un script JavaScript distant et malintentionné).

Pour plus de détails sur la sécurité des applications web, je vous recommande vivement la lecture de cet ouvrage. Très complet, il vous fournira de nombreuses et sages recommandations.


[...] This post was Twitted by eranksolution [...]
Retrouvez cet article sur Blogasty …
Vous aimez cet article? Votez pour lui sur Blogasty …
[...] Créer son propre moteur de recherche interneeranksolution.net/blog/2009/10/comment-creer-moteur-recherch… par florent1 il y a quelques secondes [...]
Je pense que la pertinence des résultats est le point faible des moteurs de recherches. Souvent ceux-ci s’appuient sur le PR ou d’autres techniques qui ne sont pas pleinement satisfaisantes.
Merci pour les liens.
Cordialement