Salve a tutti...


Questa è la classe che fino ad ora ho sviluppato...

codice:
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));
            }
        }
	}
}
Usandola in questo modo

codice:
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");
Da come risultato

codice:
Trovati risultati per "italia"
  1. Italia
Nessun risultato per "italia"
Trovati risultati per "italia"
  1. La Italia fu una corazzata[...]
Ok, funziona. Dice che ha trovato dei risultati per la key "italia" nel testo.

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