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 :
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);
}
?>
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 sql :
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."')"); 
?>
En bd est enregistré plusieurs exemples dont les titres suivants (champ:" titre_annonce") :
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