Salve a tutti...
Questa è la classe che fino ad ora ho sviluppato...
Usandola in questo modocodice:package it.deit.semedia.semply.plugin.mail; import java.io.*; import org.apache.lucene.*; public class Indexmail { public void Index(Emailitem ei) throws IOException{ FSDirectory dx = FSDirectory.getDirectory(new File("repository"),true); IndexWriter writer = new IndexWriter(dx, new StandardAnalyzer(), true); Document doc = new Document(); //Add section at the document and tokenized them doc.add(new Field("subject", ei.getSubject(), Field.Store.YES, Field.Index.TOKENIZED)); doc.add(new Field("from", ei.getFrom(), Field.Store.YES, Field.Index.TOKENIZED)); doc.add(new Field("body", ei.getBoby(), Field.Store.YES, Field.Index.TOKENIZED)); //Write indexfile writer.addDocument(doc); writer.optimize(); writer.close(); } public void Search (String key) throws Exception{ FSDirectory directory = FSDirectory.getDirectory(new File("repository"),false); Searcher searcher = new IndexSearcher(directory); searchby("subject", searcher, key); searchby("from", searcher, key); searchby("body", searcher, key); searcher.close(); } private static void searchby(String name, Searcher searcher,String key) throws Exception{ QueryParser qp=new QueryParser(name, new StandardAnalyzer()); Query query = qp.parse(key); Hits hits = searcher.search(query); if (hits.length() == 0) { System.out.println("Nessun risultato per \"" + key + "\""); } else { System.out.println("Trovati risultati per \"" + key +"\""); for (int i = 0; i < hits.length(); i++) { Document doc = hits.doc(i); System.out.println(" " + (i + 1) + ". " + doc.get(name)); } } } }
Da come risultatocodice:Emailitem inboxmail_noremote = new Emailitem("miamail@mail.com","Italia", "La Italia fu una corazzata [...] ", null ); Indexmail im = new Indexmail(); /* for (int i=0; i<inboxmail.length; i++){ im.Index(inboxmail[i]); im.Search("rossi*"); }*/ im.Index(inboxmail_noremote); im.Search("italia");
Ok, funziona. Dice che ha trovato dei risultati per la key "italia" nel testo.codice:Trovati risultati per "italia" 1. Italia Nessun risultato per "italia" Trovati risultati per "italia" 1. La Italia fu una corazzata[...]
Come faccio per sapere QUANTI ne ha trovati?
Esiste già una funzione nella libreria lucene che mi da questo risultato oppure devo percorrere una strada diversa?
Grazie a tutti...
PS: ops... mi sono accorto ora di aver sbagliato sezione. Scusate


Rispondi quotando

