[MYSQL] Query sur une partie d'un terme avec MATCH AGAINST

Query sur une partie d'un terme avec MATCH AGAINST [MYSQL] - PHP - Programmation

Marsh Posté le 15-05-2016 à 11:55:03    

Hello à tous,
 
J'ai sur mon site web un champs de recherche comme on peut le voir ici :  
 
http://www.shootmeagain.com  
 
Ce champs de recherche est muni d'un autocomplete qui va suggérer des résultats en fonction des recherches déjà faites, par pertinence.  
 

Code :
  1. $term=addslashes($_GET['term']);
  2. $req=$bd->req_exe("select string, MATCH (string) AGAINST ('$term') as score from search where MATCH (string) AGAINST ('$term') > 1 order by score desc" );
  3. $i=0;
  4. while ($datasearch=$bd->objetSuiv($req))
  5. {
  6.  $strings[$i] = no_accent(stripslashes($datasearch->string));
  7.  $i++;
  8. }
  9. $strings=json_encode($strings);
  10. echo $strings;


 
Le problème est que l'autcomplete ne s'active que lorsque qu'un mot complet est tapé, alors que j'aimerais qu'il s'active dès que quelques caractères sont tapés par exemple, tout en gardant un ordre de tri par pertinence.  
 
Comment procéder ? Merci !  
 
 [:dawa]  :hello:


---------------
SHOOT ME AGAIN WEBZINE
Reply

Marsh Posté le 15-05-2016 à 11:55:03   

Reply

Marsh Posté le 22-05-2016 à 09:56:37    

Ton souci n'est pas côté PHP (serveur) mais côté client (javascript) à mon avis.  
Tu as probablement utilisé une lib toute faite pour l'autocomplete (déclenchement, affichage des résultats), il y a des paramètres pour conditionner quand il se déclenche, regarde dans la doc. Et donne nous les infos sur la librairie que tu as utilisé.
Par exemple : http://api.jqueryui.com/autocomplete/#option-minLength


---------------
Topic .Net - C# @ Prog
Reply

Marsh Posté le 23-05-2016 à 15:49:33    

+1, souvent c'est 3 caractères minimum pour éviter trop de faux positifs

Reply

Marsh Posté le 23-05-2016 à 16:11:48    

C'est pas 4 caractère minimum au niveau de Mysql par défaut aussi (d’où le réglage JS par défaut) ?
 
Y'a aussi que faut bidouiller par mal les paramètres de Match Against de mémoire (mais Google sera d'une plus grande aide), ça devrait plutôt ressembler à ça :

Code :
  1. $req=$bd->req_exe("select string, MATCH (string) AGAINST ('+$term*' IN BOOLEAN MODE) as score from search where MATCH (string) AGAINST ('+$term*' IN BOOLEAN MODE) > 1 order by score desc" );


---------------
D3
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed