Comment fonctionne la recherche contextuelle ?
Imaginer que vous êtes dans un magasin au rayon Hifi, comme vous pouvez le voir tous les articles Hifi sont sur le même rayon, mais pas forcément les rallonges électriques qui sont peut-être à l'autre bout du magasin, et vous en avez réellement besoin car la votre ne fonctionne plus, et sans elle votre chaine Hifi électrique ne peut pas fonctionner. Si le magasin était équipé d'une recherche contextuelle, oops! d'un étalage contextuel devrais-je dire, vous auriez tout sous la main... mais ce n'est pas le cas.
Et avec une recherche contextuelle MySQL? On s'en rapproche.
La mise en place :
La première étape consiste à modifier votre table SQL pour permettre au serveur SQL de lancer une recherche contextuelle. Vous pouvez passer par l'administration d'un utilitaire de gestion de base de données comme :
phpMyAdmin.
�tape 1 : Création d'un index
Sélectionnez la table sur laquelle vous désirez lancer une recherche contextuelle, ensuite vous devrez choisir les champs de cette table sur laquelle la recherche va s'exécuter. Le plus courant est de lancer une recherche sur le titre et la description d'un article, pour avoir un maximum de pertinence sur le résultat.
Voici comment procéder :
1° Ouvrez phpMyAdmin
2° Sélectionner votre table et allez sur la structure de celle-ci
3° En bas de votre écran vous allez "créer un index"
4° Donnez un nom à l'index (peut importe le nom, choisissez celui qui vous convient le mieux)
4° Sélectionnez ensuite
FULLTEXT comme choix de l'index
5° La taille est optionnelle
6° sélectionner maintenant le champ de votre choix ou la recherche va s'effectuer puis sauvegarder
Et voila cette étape est terminé !
�tape 2 : Création des requêtes
Une fois votre table prête, il faut construire la requête SQL. Cette étape est simple à mettre en place.
Prenons l'exemple ou vous publiez des articles sur votre site, vous allez avoir le "nom" et la "description" de ces articles ($titre $description) comme base, voici la requête pour une recherche contextuelle, exécutée sur les 2 champs (titre, description)
SELECT *
FROM table
WHERE MATCH (titre, description)
AGAINST ('$titre $description');
Et voila !! Qui a dit que la recherche contextuelle était difficile à mettre en place ? Une fois cette opération terminé, vous verrez que la répéter ne vous prendra que quelques minutes de votre temps.
Supplément :
Il y a aussi des options qui peuvent être utiles pour élargir et affiner les recherches :
IN BOOLEAN MODE qui permet, en associant les mots à rechercher de signes (+, -, >, <, ...), de faire des recherches plus fines.
WITH QUERY EXPANSION qui permet de faire des recherches avec des mots proches de ceux recherchés.