G.Morreale
- index.jsp - che contiene il controllo
- protetta.jsp - che è visualizzabile solo se l'utente riporta correttamente il contenuto dell'immagine su un campo di testo.
- La generazione dell'immagine
- Il controllo
http://raibledesigns.com/rd/entry/glassfish_2_vs_tomcat_6.
http://www.pneumonoultramicroscopicsilicovolcanoconiosis.org/blog/glassfish-vs-tomcat
"Forse Cercavi: Java"
List<Query> suggested = se.suggest(sentence, 2);
//stampa query suggerite
System.out.println(suggested);
//Se esiste almento un suggerimento..
if (suggested != null && suggested.size() > 0)
{
//effettuiamo una nuova ricerca con la prima query suggerita
res = se.search(suggested.get(0));
i = 1;
//stampa risultati con la nuova query.
for (SearchResult s : res)
{
System.out.println(i++ + "° " + s.getDoc().get("descrizione") + " - " + s.getScore());
}
}
public String[] suggestSimilar(String arg0, int arg1, IndexReader arg2, String arg3, boolean arg4) throws IOException
Questo overloading è possibile avvalersi di due criteri per l'ottenimento dei risultati.
public abstract TokenStream tokenStream(String arg0, Reader arg1)
Ci consente di navigare tra i token ottenuti.
Bene, visto però che il metodo suggest realizzato nella classe SuggestAndSearchEngine ritorna diverse Query(diversi suggerimenti), è opportuno creare un metodo suggest in grado di ottenere un solo suggerimento per input.
Tale metodo sarà di supporto al metodo finale suggestComposite la cui realizzazione è obiettivo del paragrafo.
Ne incollo l'implementazione (Da inserire nella classe SuggestAndSearchEngine )
/**
* Data una singola parola è in grado di generare il suggerimento
* @param word - input su cui generare il suggerimento
* @return - Il suggerimento, esso viene proposto sottoforma di Term in modo
* da permettere la costruzione di Query composte da più termini
*/
public Term suggest(String word)
{
Term term = null;
try
{
//Inizializzazione oggetto chiave del metodo!
SpellChecker spellChecker = new SpellChecker(spellDictionaryDir);
//Se la query string esiste nel dizionario vuol dire che non ha
//senso cercare un suggerimento!
if (!spellChecker.exist(word))
{
//ricerca di parole similiari all'interno del dizionario
IndexReader indexReader = IndexReader.open(indexDirectory);
String[] similiarWords = spellChecker.suggestSimilar(word, 1,indexReader,defaultField,true);
//String[] similiarWords = spellChecker.suggestSimilar(word, 1);
if (similiarWords.length != 0)
{
//data la parole similiari si procede alla costruzione del Term
term = new Term(defaultField, similiarWords[0]);
}
}
} catch (IOException ex)
{
Logger.getLogger(SuggestAndSeachEngine.class.getName()).log(Level.SEVERE, null, ex);
} finally
{
return term;
}
}
Anche il metodo suggestComposite per semplicità fornisce un solo suggerimento per input.
Ecco la firma del metodo
public Query suggestComposite(String queryString)