[RESOLU] Recherche fulltext dans grande bdd et autocomplete

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Recherche fulltext dans grande bdd et autocomplete

Re: Recherche fulltext dans grande bdd et autocomplete

par Bisvan » 29 oct. 2015, 10:55

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 :-/

Re: Recherche fulltext dans grande bdd et autocomplete

par @rthur » 29 oct. 2015, 10:49

J'ai un doute sur le onSelect pour l'autocomplete

Re: Recherche fulltext dans grande bdd et autocomplete

par or 1 » 29 oct. 2015, 10:15

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

par Bisvan » 29 oct. 2015, 10:06

Non justement qu'un seul GET.
J'utilise la librairie autocomplete de jquery

Re: Recherche fulltext dans grande bdd et autocomplete

par @rthur » 29 oct. 2015, 09:28

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

Recherche fulltext dans grande bdd et autocomplete

par Bisvan » 29 oct. 2015, 09:12

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 ?