Voici un exemple de code source pour créer un moteur de recherche interne à un site internet en utilisant le langage de programmation PHP et une base de données MySQL.

Création de la Base de Données

Pour commencer, il est nécessaire de créer la base de données et la table qui contiendra les informations à rechercher :

CREATE DATABASE `moteur_de_recherche`; USE `moteur_de_recherche`; CREATE TABLE `pages` ( `id` int(11) NOT NULL AUTO_INCREMENT, `titre` varchar(255) NOT NULL, `url` varchar(255) NOT NULL, `contenu` text NOT NULL, PRIMARY KEY (`id`), FULLTEXT(`titre`,`contenu`) ) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

Création du Formulaire de Recherche HTML

Ensuite, créez un formulaire HTML simple pour permettre aux utilisateurs de saisir leur requête de recherche :

<form method="get" action="search.php"> <input type="text" name="q" placeholder="Rechercher..."> <input type="submit" value="Rechercher"> </form>

Création du Fichier PHP pour la Recherche (search.php)

Le fichier PHP suivant traite la requête de recherche et affiche les résultats :

<?php // Connexion à la base de données $db = new mysqli('localhost', 'utilisateur', 'motdepasse', 'moteur_de_recherche'); if ($db->connect_error) { die('Erreur de connexion à la base de données : ' . $db->connect_error); } // Récupération de la requête de recherche $query = $db->real_escape_string($_GET['q']); // Requête SQL pour récupérer les résultats de recherche $sql = "SELECT * FROM `pages` WHERE MATCH(`titre`,`contenu`) AGAINST ('$query')"; // Exécution de la requête $result = $db->query($sql); // Affichage des résultats de recherche if ($result->num_rows > 0) { while ($row = $result->fetch_assoc()) { echo '<h3><a href="' . $row['url'] . '">' . $row['titre'] . '</a></h3>'; echo '<p>' . $row['contenu'] . '</p>'; } } else { echo 'Aucun résultat trouvé pour "' . $query . '"'; } // Fermeture de la connexion à la base de données $db->close(); ?>

Ce code source est un exemple très simple pour un moteur de recherche interne à un site internet.

Lire aussi: Code défaut 02071 : Guide de dépannage Audi

Class PHP pour les requêtes SQL

Je propose une class PHP très pratique qui vous permettra de gagner du temps lorsque vous aurez besoin de lancer des requêtes SQL. En effet, celle-ci a été conçue pour lancer une requête SQL à vitesse grand « V ». Tout est présent: INSERT, UPDATE, COUNT, SELECT, DELETE et c'est pas tout, cette classe vous permet aussi de créer une table SQL ou de la supprimer.

Améliorations Possibles

Vous devriez avoir un moteur de recherche fonctionnel avec tous ces codes, je vais tout de même terminer cet article en détaillant un peu plus quelques fonctionnalités du moteur et en proposant des pistes d'évolutions.

  • Problème des mots composés. En effet, un mot comme « faux-plafond » correspond à deux mots pour un moteur classique, soit « faux » et « plafond ».
  • Gestion des requêtes qui peut être améliorée.
  • Gestion de la sécurité, bien que les données doivent être traitées en amont pour plus de confort.

Algorithme de pertinence

L'algorithme de pertinence que j'ai créé est tout simple, mais il donne des idées d'évolution pour la suite. L'algorithme est activé lorsque le 5e argument de la class moteurAffichage() est présent. nom d'une colonne SQL pour accueillir les valeurs de classement ('algo' par défaut). La pertinence se fait ici de manière simple. Le moteur analyse la requête de l'utilisateur puis compte dans les contenus le nombre d'occurrences des mots et expressions. Une fois les comptes réalisés, l'option met à jour la colonne de la base de données ('algo' par défaut) puis classe les résultats en fonction de la valeur attribuée. le classement se fait par pertinence mais aussi avec un autre ORDER BY si le 4e argument de la class (tableau) est activé (true).

Index FULLTEXT

Si vous voulez utiliser le moteur FULLTEXT, il est impératif que les colonnes dans lesquelles nous voulons chercher ait des index FULLTEXT dans la base de données. Comme tout le monde n'est pas "expert" en SQL, j'ai créé une class spécifique pour ajouter un index FULLTEXT aux colonnes. En réalité, l'index FULLTEXT est ajouté uniquement s'il n'existe pas déjà pour la (ou les) colonne(s) sélectionnées. Dans notre cas, nous avons utiliser un tableau contenu les colonnes mais nous pouvons aussi utiliser une chaîne de caractères avec les noms de colonne séparées par des virgules.

Surlignage des mots recherchés

La class surlignageMot permet de mettre en gras les mots rechercher. Elle prend cinq paramètres (seuls les deux premiers sont obligatoires). Pour ceux qui avaient déjà téléchargé le moteur de recherche, sachez que l'ancienne version de la class ne prenait que trois paramètres et manquait de précision... N.B. : les deux derniers paramètres doivent reprendre ceux fixés dans la class moteurRecherche, ils ont été ajoutés pour obtenir de bien meilleurs résultats en matière de mise en gras des mots clés recherchés.

Lire aussi: Autoradio Renault Mégane

"exact" (par défaut) permet de mettre en gras la chaîne de caractère précise sans tenir compte de ce qui l'entoure (par exemple, si nous cherchons la chaîne "mot" avec la méthode LIKE, le moteur afficherait "moteur de recherche", "motoculteur"... "total" (ou "complet") permet de mettre en gras la chaîne précise et son environnement proche (pour reprendre notre exemple, la recherche de la chaîne "mot" avec la méthode LIKE afficherait "moteur de recherche" et "motoculteur").

Pagination

L'objet moteurPagination() permet d'utiliser un système de pagination sans avoir à tout coder à la main et à adapter. La méthode a totalement été mise en place pour fonctionner avec le moteur de recherche PHP sans problème.

Paramètres de pagination :

  • Le nombre de pages affichées autour de la page courante en surbrillance (2 par défaut). Par exemple, si nous voulons afficher "... 1 2 3 ...", il faut mettre 1 en valeur, tandis que 2 permet de faire quelque chose comme "...
  • L'affichage de liens pour les premières et dernières pages (0 pour aucun lien, par défaut). Par exemple, une valeur de 1 permet de faire quelque chose du type "1 ... 4 5 6 7 8 ... 17" et une valeur de 2 "1 2 ... 4 5 6 7 8 ...
  • Un tableau qui contient les séparateur (5 args) dans l'ordre : points de suspension, après "première page" et avant "dernière page", entre les numéros de page, après "précédent" et avant "suivant", après lien(s) de début et avant lien(s) de fin.

Auto-complétion

N.B. La version 2.0 de la class du moteur de recherche PHP apporte une nouvelle fonctionnalité intéressante. Outre les quelques nettoyages du code, cette version a mis au jour la possibilité d'ajouter un système d’auto-complétion (comme sur Google). Possibilité d'ajouter automatiquement les mots recherchés dans l'index inversé au fur et à mesure des recherches des internautes.

Conclusion

A vous d'en faire bon usage et de l'améliorer selon vos goûts. Code entièrement libre d'utilisation. Ces codes sont opérationnels. Je m'en sers sur mon site.

Lire aussi: Tout savoir sur la carte grise

tags: #code #source #moteur #de #recherche #php

Articles populaires: