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)