par
enneite » 31 janv. 2011, 11:39
Je ce que je propose change un peu la stucture du moteur :
Tu ajoute une colonne mots_cles à ta table SQL.
Tu y rentre des mots clés à un format adapté alphanumérique minuscule par exemple grâce à une fonction PHP de formatage que tu crées.
function supprime_accents($chaine){
$cible = array(
'À', 'Á', 'Â', 'Ã', 'Ä', 'Å', 'Æ', 'A', 'A',
'Ç', 'C', 'C', 'Œ',
'D', 'Ð',
'à', 'á', 'â', 'ã', 'ä', 'å', 'æ', 'a', 'a',
'ç', 'c', 'c', 'œ',
'd', 'd',
'È', 'É', 'Ê', 'Ë', 'E', 'E',
'G',
'Ì', 'Í', 'Î', 'Ï', 'I',
'L', 'L', 'L',
'è', 'é', 'ê', 'ë', 'e', 'e',
'g',
'ì', 'í', 'î', 'ï', 'i',
'l', 'l', 'l',
'Ñ', 'N', 'N',
'Ò', 'Ó', 'Ô', 'Õ', 'Ö', 'Ø', 'O',
'R', 'R',
'S', 'S', 'Š',
'ñ', 'n', 'n',
'ò', 'ó', 'ô', 'ö', 'ø', 'o',
'r', 'r',
's', 's', 'š',
'T', 'T',
'Ù', 'Ú', 'Û', 'U', 'Ü', 'U', 'U',
'Ý', 'ß',
'Z', 'Z', 'Ž',
't', 't',
'ù', 'ú', 'û', 'u', 'ü', 'u', 'u',
'ý', 'ÿ',
'z', 'z', 'ž',
);
$rempl = array(
'A', 'A', 'A', 'A', 'A', 'A', 'AE', 'A', 'A',
'C', 'C', 'C', 'CE',
'D', 'D',
'a', 'a', 'a', 'a', 'a', 'a', 'ae', 'a', 'a',
'c', 'c', 'c', 'ce',
'd', 'd',
'E', 'E', 'E', 'E', 'E', 'E',
'G',
'I', 'I', 'I', 'I', 'I',
'L', 'L', 'L',
'e', 'e', 'e', 'e', 'e', 'e',
'g',
'i', 'i', 'i', 'i', 'i',
'l', 'l', 'l',
'N', 'N', 'N',
'O', 'O', 'O', 'O', 'O', 'O', 'O',
'R', 'R',
'S', 'S', 'S',
'n', 'n', 'n',
'o', 'o', 'o', 'o', 'o', 'o',
'r', 'r',
's', 's', 's',
'T', 'T',
'U', 'U', 'U', 'U', 'U', 'U', 'U',
'Y', 'Y',
'Z', 'Z', 'Z',
't', 't',
'u', 'u', 'u', 'u', 'u', 'u', 'u',
'y', 'y',
'z', 'z', 'z',
);
$fich = str_replace($cible, $rempl, $chaine);
return $fich;
}
function conversion_mots_cles($string,$separateur=' '){
$sortie=$chaine;
$sortie=strtolower($sortie);
$sortie=supprime_accents($sortie);
$expression='/[^0-9a-zA-Z]/';
$sortie = preg_replace($expression,$separateur,$sortie);
$sortie=trim($sortie,$separateur);
return $sortie;
}
tu insères les mots clés dans ta table après les avoir traités avec la fonction du dessus.
$keywords = conversion_mots_cles($_POST['titre']);
$requeteSQL = "update latable set ... , mots_cles = '$keywords' where id = $id" ;
Lorsqu'un utilisateur tape un mots clé dans le moteur, tu formate celui ci avec la même fonction.
$keywords = $_POST['keywords'];
$keywords = conversion_mots_cles($keywords);
// Puis la requête SQL
.... where products_name like '%" . $keywords . "%'
Ainsi tu es sur d'avoir les mêmes stuctures de mots clés pour ta recherche.
Pour la fonction conversion_mots_cles($keywords), tu l'adapte à ta guise, tu peux aussi l'aménager pour traiter les pluriels, les articles et pronoms, etc.
Je ce que je propose change un peu la stucture du moteur :
Tu ajoute une colonne mots_cles à ta table SQL.
Tu y rentre des mots clés à un format adapté alphanumérique minuscule par exemple grâce à une fonction PHP de formatage que tu crées.
[php]
function supprime_accents($chaine){
$cible = array(
'À', 'Á', 'Â', 'Ã', 'Ä', 'Å', 'Æ', 'A', 'A',
'Ç', 'C', 'C', 'Œ',
'D', 'Ð',
'à', 'á', 'â', 'ã', 'ä', 'å', 'æ', 'a', 'a',
'ç', 'c', 'c', 'œ',
'd', 'd',
'È', 'É', 'Ê', 'Ë', 'E', 'E',
'G',
'Ì', 'Í', 'Î', 'Ï', 'I',
'L', 'L', 'L',
'è', 'é', 'ê', 'ë', 'e', 'e',
'g',
'ì', 'í', 'î', 'ï', 'i',
'l', 'l', 'l',
'Ñ', 'N', 'N',
'Ò', 'Ó', 'Ô', 'Õ', 'Ö', 'Ø', 'O',
'R', 'R',
'S', 'S', 'Š',
'ñ', 'n', 'n',
'ò', 'ó', 'ô', 'ö', 'ø', 'o',
'r', 'r',
's', 's', 'š',
'T', 'T',
'Ù', 'Ú', 'Û', 'U', 'Ü', 'U', 'U',
'Ý', 'ß',
'Z', 'Z', 'Ž',
't', 't',
'ù', 'ú', 'û', 'u', 'ü', 'u', 'u',
'ý', 'ÿ',
'z', 'z', 'ž',
);
$rempl = array(
'A', 'A', 'A', 'A', 'A', 'A', 'AE', 'A', 'A',
'C', 'C', 'C', 'CE',
'D', 'D',
'a', 'a', 'a', 'a', 'a', 'a', 'ae', 'a', 'a',
'c', 'c', 'c', 'ce',
'd', 'd',
'E', 'E', 'E', 'E', 'E', 'E',
'G',
'I', 'I', 'I', 'I', 'I',
'L', 'L', 'L',
'e', 'e', 'e', 'e', 'e', 'e',
'g',
'i', 'i', 'i', 'i', 'i',
'l', 'l', 'l',
'N', 'N', 'N',
'O', 'O', 'O', 'O', 'O', 'O', 'O',
'R', 'R',
'S', 'S', 'S',
'n', 'n', 'n',
'o', 'o', 'o', 'o', 'o', 'o',
'r', 'r',
's', 's', 's',
'T', 'T',
'U', 'U', 'U', 'U', 'U', 'U', 'U',
'Y', 'Y',
'Z', 'Z', 'Z',
't', 't',
'u', 'u', 'u', 'u', 'u', 'u', 'u',
'y', 'y',
'z', 'z', 'z',
);
$fich = str_replace($cible, $rempl, $chaine);
return $fich;
}
function conversion_mots_cles($string,$separateur=' '){
$sortie=$chaine;
$sortie=strtolower($sortie);
$sortie=supprime_accents($sortie);
$expression='/[^0-9a-zA-Z]/';
$sortie = preg_replace($expression,$separateur,$sortie);
$sortie=trim($sortie,$separateur);
return $sortie;
}
[/php]
tu insères les mots clés dans ta table après les avoir traités avec la fonction du dessus.
[php]
$keywords = conversion_mots_cles($_POST['titre']);
$requeteSQL = "update latable set ... , mots_cles = '$keywords' where id = $id" ;
[/php]
Lorsqu'un utilisateur tape un mots clé dans le moteur, tu formate celui ci avec la même fonction.
[php]
$keywords = $_POST['keywords'];
$keywords = conversion_mots_cles($keywords);
// Puis la requête SQL
.... where products_name like '%" . $keywords . "%'
[/php]
Ainsi tu es sur d'avoir les mêmes stuctures de mots clés pour ta recherche.
Pour la fonction conversion_mots_cles($keywords), tu l'adapte à ta guise, tu peux aussi l'aménager pour traiter les pluriels, les articles et pronoms, etc.