Bonjour,
J'ai un petit soucis concernant les recherches en FULLTEXT que je ne comprend pas. En gros, certaines recherches fonctionnes alors que d'autres pas.
En gros :
Table TOTO contenant plusieurs champs dont 2 nommés "titre_annonce" et "texte_annonce" en "FULLTEXT".
Je récupère les mots recherchés pour les traiter :
A ce stade si j'entre par exemple la recherche "moteurs de recherches" mon code donne comme résultat : "+moteurs +de +recherches" donc normalement une recherche sur les 3 mots.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 <?php if(!empty($_GET['key'])){ $variableclef = trim(stripcslashes(htmlspecialchars($_GET["key"]))); //On recupère la recherche mot par mot $motclef = explode(" ",$variableclef); //on compte le nombre de mot $num = count($motclef); //on boucle for( $i = 0; $i < $num; $i++ ) { //Recherche de type : '+mot1 +mot2 +mot3' //cf : http://dev.mysql.com/doc/refman/5.0/fr/fulltext-boolean.html $recherche .= '+'.$motclef[$i].' '; } //on échappe les simples quote $recherche = str_replace("'" ,"\'",$recherche); } ?>
Code sql :
En bd est enregistré plusieurs exemples dont les titres suivants (champ:" titre_annonce") :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 <?php $query=mysql_query("SELECT * FROM TOTO WHERE valide='1' AND prix LIKE '".$_GET['prix']."%' AND MATCH (titre_annonce,texte_annonce) AGAINST ('".$recherche."')"); ?>
moteurs de recherches
recherche maison noirmoutier
et 5 titres contenant le mot "annonce" (annonce ou l'annonce).
Si je cherche les termes : "moteurs de recherches" ou "moteurs" ou "recherches", je n'ai aucun résultat.
Si je cherche les termes : "recherche maison noirmoutier" ou "recherche" ou " maison" ou "noirmoutier", j'ai des résultats.
Si je recherche le terme : "annonce", je n'ai aucun résultat bien qu'il soit présent 5 fois.
Si je cherche le terme : "l'annonce", j'ai 3 résultats sur 5.
Ce que je ne comprend pas, c'est pourquoi parfois je n'ai pas de résultat bien que les termes soient présent ou qu'ils me manque une partie des résultats ?
Nota: ma version sql doit contenir un minimum de 4 lettres pour les recherches.
Merci
Partager