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)