Page 1 sur 1

Recherche fulltext dans grande bdd et autocomplete

Posté : 29 oct. 2015, 09:12
par Bisvan
Bonjour

J'essaye d'installer un script autocomplete pour une recherche dans une base de donnée rassemblant près de 15 millions de résultats. Pour l'heure ma recherche query est très lente (entre 5 et 10 sec) pour avoir un résultat (avec un query utilisant LIKE et %".
J'ai donc indexé ma table et tenté d'utiliser MATCH() AGAINST ()
Or ma recherche ne fonctionne plus (elle se fait sur le premier caractère rentré mais ne se relance pas sur les caractères suivants).

Voici mon code :

JS
$(document).ready(function(){
    $('#search-bano').autocomplete({
    serviceUrl: 'research.php',
    dataType: 'json',
    onSelect: function (suggestion) {
        console.log(suggestion);
    }
 });
});

HTML
<input type="text" id="search-bano" value="">
PHP
$term = strip_tags(substr($_GET['query'],0, 100));
$term = utf8_decode($term);
$term = mysql_escape_string($term); // Attack Prevention
if($term!="")
{

 $query = mysql_query("select * from bano where MATCH(voie)  AGAINST ('$term*')");
 $suggestions = array();
 if (mysql_num_rows($query))
 {
    while($row = mysql_fetch_assoc($query))
    {
        $display=''.$row['voie'].'';
        $suggestions[] = array(
        "value" => $display,    
        "idstreet" => $row['idstreet']);
  }       
 }

 echo json_encode(array('suggestions' => $suggestions));
}
Si je tape dans mon champ input "Rue du Général de Gaulle" la console Firebug me renvoie : GET /research.php?query=R (soit que le 1e caractère de ma recherche

Auriez vous une idée pour m'aider ?

Re: Recherche fulltext dans grande bdd et autocomplete

Posté : 29 oct. 2015, 09:28
par @rthur
Si je tape dans mon champ input "Rue du Général de Gaulle" la console Firebug me renvoie : GET /research.php?query=R (soit que le 1e caractère de ma recherche
Et tu n'as pas d'autres requêtes GET avec les autres caractères tapés ?

Si c'est la seule requête GET, alors tu as un problème de javascript, vérifie la console JS et dis nous en + sur ce que tu utilises comme solution d'autocompletion

Re: Recherche fulltext dans grande bdd et autocomplete

Posté : 29 oct. 2015, 10:06
par Bisvan
Non justement qu'un seul GET.
J'utilise la librairie autocomplete de jquery

Re: Recherche fulltext dans grande bdd et autocomplete

Posté : 29 oct. 2015, 10:15
par or 1
des pistes, mettre un limit à la requete
mettre un nombre minimal de caractère à l'autocomplete avant de faire un get

Re: Recherche fulltext dans grande bdd et autocomplete

Posté : 29 oct. 2015, 10:49
par @rthur
J'ai un doute sur le onSelect pour l'autocomplete

Re: Recherche fulltext dans grande bdd et autocomplete

Posté : 29 oct. 2015, 10:55
par Bisvan
Effectivement avec un query utilisant MATCH/AGAINST si le mot est trop court il ne renvoie aucun résultat.
j'ai donc rajouté un if() demandant un nombre minimum de 5 caractères pour lancer la recherche et cela fonctionne.
Tout bête quoi :-/