Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it L'avatar di redmak
    Registrato dal
    May 2005
    Messaggi
    83

    [JAVA] - Lucene, risultati trovati

    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

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328

    Moderazione

    Originariamente inviato da redmak
    PS: ops... mi sono accorto ora di aver sbagliato sezione. Scusate
    Spostato.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.