Contents

Query suggestions: Lato client

Per inviare richieste di suggestions al server è stata realizzata una libreria JavaScript, che fa uso della libreria jQuery e in particolare dell'autocomplete widget.

La funzione di invio della richiesta viene svolta dalla seguente funzione:

suggestions(prefix)

La funzione viene associata ad una textbox, nel seguente modo:

 $('#id_textbox').keyup(){suggestions($(this).val())}

Le richiesta di suggestions dal server vengono attivate solo se si verificano le seguenti condizioni:

Primo passo: evento keyup

Ogni volta che si verifica l'evento di keyup sul textbox di ricerca, si controlla che il carattere premuto appartenga ad un certo insieme: [aA-zZ] or [0-9] or spazio or canc or back space.

Secondo passo: timer

Dopo aver atteso 100msec dall'evento keyup, controlliamo se il prefisso corrente è uguale al prefisso presente al momento dell'evento. Solo in questo caso si procede al passo successivo. I millisecondi di attesa sono specificati nella variabile maxWaitSuggestions.

Il timer serve ad evitare di inviare una richiesta al server ad ogni carattere digitato dall'utente: si attende fino al momento in cui l'utente smette di scrivere (più precisamente, dopo che passano maxWaitSuggestions millisecondi dalla digitazione dell'ultimo carattere).

Terzo passo: suggestions già ricevute?

Le suggestion ricevute dal server vengono cache-ate. I termini inseriti dall'utente vengono prima ricercati in questa cache. Se la cache contiene un numero sufficiente di suggestions da visualizzare, almeno pari a minResults, si evita di inviare una richiesta al server, riducendone quindi il numero. Se il numero di suggestions presenti non è sufficiente, si invia una nuova richiesta al server, con tutta la stringa presente nella textbox.

Parametri di configurazione

Le seguenti variabili controllano il comportamento delle funzioni della libreria:

MIN_CHAR: numero minimo di caratteri da digitare per far partire la richiesta al server
maxServerResults: numero di termini da richiedere al server
maxClientResults: numero di termini da visualizzare
maxWaitSuggestions: millisecondi di attesa tra la digitazione di un carattere e quello successivo, prima di inviare una nuova richiesta

Query suggestions: Lato server

Ternary search tree

Integrazione del servizio (apache o kyoto?)

Aggiornamento queries

Come interrogare il servizio

La richiesta al server può essere inviata con una GET passando i seguenti parametri:

/suggestions?prefix=ma&n=5&format=json

Dove prefix è il prefisso digitato dall'utente, n è il numero di suggestions richiesta al server e format è il tipo di formato restituito dal server.

Il formato può essere json o xml.

Query Filter

Powered by MediaWiki