Les moteurs de recherche fourmillent d’options toujours plus intéressantes que les autres. Bien que la plupart semblent être un acquis depuis plusieurs années, force est de constater que même les fonctionnalités les plus simples demandent parfois de nombreuses lignes de code.
Nous allons nous intéresser ici à la correction automatique des requêtes de recherche. Cette fonctionnalité implique de nombreux paramètres mais permet souvent de se sortir d’un bien mauvais pas quand notre niveau d’orthographe décide de s’approcher du néant (et comme cela arrive à tout le monde, l’option de correction devient fort intéressante).
L’exemple ci-dessous digne des perles trouvées sur le site Bescherelle ta mère active la fonctionnalité de correction des requêtes de Google. Elle illustre ce qu’il est possible de réaliser en matière de correction en PHP objet, comme nous le verrons plus bas dans cet article…
Correction automatique des requêtes par Google
Pour les impatients, vous pouvez télécharger le pack complet en PHP 5.5 ici (les versions antérieures du moteur de recherche ont été abandonnées) :
Télécharger “Pack complet – moteur de recherche PHP 5.5 – PHP 7”moteurPHP5.5.zip – Téléchargé 34888 fois – 171 Ko
Télécharger “Classe PHP 5.5 et PHP 7 du moteur de recherche”moteur-php5.5.class-inc.zip – Téléchargé 4485 fois – 13 Ko
La correction automatique des requêtes est présente depuis si longtemps sur Google que l’on en oublierait presque qu’il est très difficile d’atteindre un tel niveau de performance en matière de correction orthographique. Bing utilise également ce type de procédé et a même expliqué comment le moteur de recherche faisait pour corriger les requêtes via SearchEngineWatch.
En fait, de nombreuses méthodes permettent de corriger l’orthographe des mots tapés dans les requêtes de recherche. En voici quelques-unes :
Certaines méthodes présentées ici peuvent être couplées avec d’autres pour augmenter le nombre de possibilités. Nous pouvons déjà imaginer que Google et Bing ne se contentent pas de ces techniques “simples”, ils utilisent sûrement des analyses sémantiques et thématiques avant les corrections (pour restreindre les champs de correction, etc.).
Chaque méthode impose un index de mots et expressions “sans faute d’orthographe” pour être utilisé comme base de comparaison. C’est la qualité et la taille de cet index inversé qui permet une plus grande précision du correcteur orthographique.
Qu’on se le dise, même avec un index inversé de la puissance de celui de Google ou Bing, des fautes passeront toujours entre les mailles du filet. La phonétique a ses limites et même un tableau de correspondance idéal ne pourra jamais répondre à tous les cas de figures. Ce type de fonctionnalités tend donc à une meilleure interprétation des requêtes sans pour autant garantir 100% d’exactitude.
Les méthodes PHP objet (POO) de la correction orthographique automatique ont été ajoutées au sein du moteur de recherche PHP objet que j’ai créé il y a plusieurs mois. Ainsi, nous bénéficierons de tous les atouts du moteur existant avec les nouvelles fonctionnalités.
Plusieurs méthodes permettent de corriger l’écriture des requêtes de recherche (la méthode principale teste les algorithmes soundex et metaphone), de créer son propre index inversé, de vérifier si l’index existe, etc. Pour être totalement honnête, il est prévu que je réécrive le moteur complet avec plus de méthodes qu’auparavant afin de le découper encore davantage et le rendre plus modulaire qu’il ne l’est déjà, j’ai donc déjà entrepris ce travail avec ces nouveaux objets PHP.
Il est possible de personnaliser l’affichage qui précède ou encadre la requête corrigée. Dans la capture suivante (sans CSS donc à l’état brut), il est inscrit “Tentez avec une autre orthographe : ” suivi de la requête corrigée (correspondant à l’ancre du lien réécrit en HTML).
Correction orthographique des requêtes de recherche en PHP Objet
Les expressions exactes recherchées (entre guillemets) sont récupérées ainsi que les mots indépendants (comme “amet” et “dolor” ici) afin de correspondre au maximum à la recherche originelle.
Il est possible également d’utiliser une méthode particulière (à placer obligatoirement après la méthode de correction !) pour afficher directement les résultats de la requête corrigée, comme c’est le cas sur Google notamment. Si cette méthode n’est pas appliquée, on risque d’obtenir le message “Pas de résultats pour cette recherche.” si les fautes d’orthographes sont trop bloquantes pour la recherche.
Voici l’exemple du code du fichier moteur-normal-php5.5.php présent dans le pack (voir en haut de l’article). Les lignes surlignées correspondent aux ajouts spécifiques concernant la correction orthographique automatique.
Le moteur de recherche contient 9 nouvelles méthodes dont trois objets privés, nous allons les décrire rapidement ici, bien que tout soit noté dans les commentaires de la class PHP à télécharger :
Vraiment merci pour ce moteur de recherche.
Bonjour,
J’ai un problème avec votre moteur de recherche.
C’est que le moteur de recherche fonction parfaitement bien en local mais refuse en ligne.
Svp pouvez vous m’aider???
Merci
Bonjour,
Dites-moi ce qui ne va pas. En gros, le moteur fonctionne sur Wamp, mais quand vous le passez en ligne sur un “vrai” serveur, ça ne fonctionne plus ? Et qu’est-ce qui ne fonctionne plus exactement ?
Je pense que le problème de Anoba était au niveau de la requête SQL de l’auto complétion. En local la requête fonctionne et en ligne sur une version plus stricte la requête bloque au niveau de “idindex DESC” qui n’est pas sélectionné par le “select”…
Sympa ce petit moteur…
Je le trouve très bien pour un seul mot de recherche mais pas très précis pour deux mots ou plus. La liste de suggestion disparait lorsque l’on saisi un espace entre deux mots…
Le moteur est aussi pertinent pour un ou plusieurs mots puisque ce dernier cherche de la même manière en réalité. On pourrait même dire qu’il est forcément plus pertinent avec plusieurs mots puisqu’il n’affiche que les résultats qui les contiennent tous. Ensuite, tout dépend du réglage que vous en avez fait, car il est possible d’activer ou non l’algorithme de pertinence, de changer les types de tri et les priorités, etc.
Concernant les suggestions, là encore c’est juste un paramètre à changer car il est possible d’avoir des suggestions pour chaque mot tapé, comme dans le moteur de recherche de ce blog par exemple (c’est basé sur ce moteur justement).
Après, ce moteur n’a aucunement la prétention de rivaliser avec Qwant ou Google, ou même Elastic Search qui possède des équipes complètes… ^^
J’ai juste un dernier petit souci au niveau des réglages des accents. L’auto complétion ne fonctionne pas si “$field” contient des accents. Je voudrais avoir des noms de colonne de table de base de données avec accents du type : “Faits_de_société”, “Géographie”… J’ai activer l’option mais cela ne suffit pas -> ne renvoi aucune erreur…
Vous voulez mettre des accents dans le nom des tables de base de données ? Normalement ça ne fonctionne pas, au même titre que les tirets. Il faut des noms de table sans accents, sans tirets, seuls les lettres non accentuées et underscores sont acceptés il me semble.
bonjour, les sources ne sont pas accessibles pour la version 7+ de php,
J’ai déjà utilisé votre moteur dans une version antérieure, il est génial, bravo pour votre travail 🙂
cordialement,
Benoît
Bonjour,
La version 5.5 fonctionne jusqu’à PHP 7, c’est pour cela qu’il n’y a pas de mise à jour ou de nouvelles versions. Passer cela en PHP 7 ne changerait pas grand chose côté code, hormis rajouter quelques types de données et de méthodes. PHP 7 lit très bien cette version, je l’utilise d’ailleurs dans cet environnement depuis plus de deux ans.
Entendu Mathieu, merci.
Pour une raison que je n’arrive pas à élucider, la ligne 420 de moteur-php5.5.class-inc.php me renvoie sur une page 404 après avoir minutieusement controlé tous mes paramètres de connection. J’ai pensé à ma version de php, mais vous balayez cette option ce qui est rageant vu qu’il s’agit d’un problème en apparence très simple. Probablement aurais-je oublié quelque chose, je m’y remets !!!
Ah, le problème est très étonnant en ligne 420, car cela correspond au comptage du nombre de résultats, qui ressemble en tout point à celle de la ligne 422 (qui ne semble pas planter) à un détail près à la requête de la ligne 418. En revanche, j’ai vu que les lignes 421 et 423 pour les “or die()” devraient être mises à la suite en théorie, et pas sur des lignes à part. Testez ça en collant la ligne 421 à la fin de la 420, et la 423 à la fin de la 422. En gros, vous devez avoir la requête suivie du “or die()”.
Pour le reste, le plus étonnant serait que la requête ne fonctionne pas pour le comptage, mais fonctionne très bien pour la récupération des résultats (requête de la ligne 418), alors qu’elles s’inspirent des mêmes paramétrages, etc. :-S
Bon j’ai trouvé si ca peut aider quelqu’un le moteur plantait sans raison valable : mon erreur était dans la base de données, mes champs étant encodés en UTF8-unicode au lieu d’UTF8-general ci…
Voilà 🙂
pffff ^^
Les joies de l’encodage des caractères… ^^




Auteur : Alexandra Martin / Mathieu Chartier
Editeur : Eyrolles
Prix : 32,00 € (345 pages)
Auteur : Alexandra Martin / Mathieu Chartier
Editeur : Eyrolles
Prix : 32,00 € (570 pages)
Auteur : Alexandra Martin / Mathieu Chartier
Editeur : Eyrolles
Prix : 29,90 € (522 pages)
Auteur : Mathieu Chartier
Editeur : First Interactive
Prix : 19,90 € (411 pages)
Auteur : Mathieu Chartier
Editeur : First Interactive
Prix : 29,90 € (622 pages)
Télécharger “SwipeMenu.zip”SwipeMenu.zip – Téléchargé 18071 fois – 52 Ko
Télécharger “Spider Simulator PHP”spider-simulator.zip – Téléchargé 17480 fois – 2 Ko
Télécharger “ReadingIndicator 1.0”readingIndicator-1.0.zip – Téléchargé 15919 fois – 7 Ko
Télécharger “Parseur Facebook”parser-facebook.zip – Téléchargé 17321 fois – 3 Ko
Télécharger “Pack complet – moteur de recherche PHP 5.5 – PHP 7”moteurPHP5.5.zip – Téléchargé 34888 fois – 171 Ko
Ce blog est le résultat de plusieurs années de travail mais il ne fait pas manger son homme. Découvrez l’agence web et l’organisme de formation géré par Mathieu Chartier et n’hésitez pas à prendre contact pour suivre des formations personnalisées.
Tous droits réservés © Blog Internet-Formation 2009 – 2022

source

Catégorisé:

Étiqueté dans :