La principale vocation du plugin Levenshtein est de proposer des corrections de mots lors de la recherche.
Dépendance
Pour fonctionner le plugin a besoin d’un lexique dans lequel faire les recherches et comparaisons.
Pour cela, il dispose du pipeline levenshtein_calculer.
Ce pipeline fournit 2 paramètres :
- mot : les mots qui sont candidats à être des corrections du mot.
- term : le mot à rechercher.
Exemple dans le plugin Vocabulaire :
function vocabulaire_levenshtein_calculer($flux) {
$get_lev = sql_allfetsel('mot', 'spip_vocabulaires', 'SOUNDEX(mot) = SOUNDEX('.sql_quote($flux['term']).')');
$flux['mot'] = array_merge($flux['mot'], $get_lev);
return $flux;
}
Ensuite, le plugin va calculer la distance de levenshtein et filtrer pour ne garder que les mots les plus proches.
L’affichage
L’affichage des propositions de correction se fait via la balise #LEVENSHTEIN. Si aucun paramètre n’est passé à la balise, elle utilisera automatiquement le contenu de la recherche (_request(’recherche’)).
Si un paramètre est passé à la balise, il sera utilisé à la place de ’recherche’ (_request(’mon_truc’))
Les SOUNDEX
L’utilisation des SOUNDEX de mysql est un précieux allié quand on travaille sur les corrections de mots.
Le plugin Vocabulaire référence 336531 mots français. Impossible de tester chaque mots avec la distance de Levenshtein, les serveurs classiques ne le supporteraient pas.
C’est là qu’interviennent les SOUNDEX, cela filtre les mots d’une base de donnée pour renvoyer les mots qui « sonne » comme les autres. Cela fait directement moins de mots à tester.
Ce plugin est installé sur le moteur de recherche de mon site personnel. N’hésitez pas à jouer avec !
Aucune discussion
Ajouter un commentaire
Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :
Merci d’avance pour les personnes qui vous aideront !
Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.
Suivre les commentaires : |