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 rechercheAuriez vous une idée pour m'aider ?