|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: Jul 2008
Messaggi: 1
|
Lucene-moreLikeThis
Salve a tutti,
mi sono appena iscritta !!! Vorrei chiedervi un consiglio: per un progetto all'uni devo fare delle ricerche per documenti simili e pensavo di utilizzare la classe di Lucene MoreLikeThis Però non mi funziona affatto! Posto il codice, magari qualcuno saprà darmi una risposta! Io sono disperata sono 4 giorni che cerco in rete public void searchBySimilarity(Searcher searcher, int oid) throws Exception { FSDirectory dx = FSDirectory.getDirectory(new File("C:/repository.dx")); FSDirectory rs = FSDirectory.getDirectory(new File("C:/repositorySearched.dx")); IndexReader ir = IndexReader.open(dx); IndexReader isc = IndexReader.open(rs); IndexSearcher is = new IndexSearcher(dx); MoreLikeThis morelt = new MoreLikeThis(isc); RicettaFacade ricettaFacade = new RicettaFacade(); Ricetta ricetta = ricettaFacade.getRicetta(oid); //creo il documento con la ricetta che ho Document doc = new Document(); IndexWriter writer = new IndexWriter(rs, new MyAnalyzer(), true); System.out.println(ricetta.getNome()); doc.add(new Field("nome", ricetta.getNome(), Field.Store.YES, Field.Index.TOKENIZED)); doc.add(new Field("descrizione", ricetta.getDescrizione(), Field.Store.YES, Field.Index.TOKENIZED)); doc.add(new Field("portata", ricetta.getPortata().toString(), Field.Store.YES, Field.Index.UN_TOKENIZED)); doc.add(new Field("costo", Double.toString(ricetta.getCosto()), Field.Store.YES, Field.Index.UN_TOKENIZED)); doc.add(new Field("voto", Integer.toString(ricetta.getVoto()), Field.Store.YES, Field.Index.UN_TOKENIZED)); doc.add(new Field("calorie", Integer.toString(ricetta.getCalorie()), Field.Store.YES, Field.Index.UN_TOKENIZED)); int id = ricetta.getOid(); IngredientiRicettaFacade getIngred = new IngredientiRicettaFacade(); ArrayList<IngredientiRicetta> ingredienti = getIngred.getIngredientiRicetta(id); if (ingredienti != null) { ListIterator it1 = ingredienti.listIterator(); while (it1.hasNext()) { IngredientiRicetta ingrRic = (IngredientiRicetta) it1.next(); doc.add(new Field("ingrediente", ingrRic.getTipoingrediente(), Field.Store.YES, Field.Index.UN_TOKENIZED)); } } writer.addDocument(doc); writer.close(); //fine creazione del documento // lo ricerco con la ricerca per nome searcher = new IndexSearcher(rs); Hits hitsin= this.searchByNome(searcher, ricetta.getNome()); int idDoc = hitsin.id(0); System.out.println("id documento: "+idDoc); // Reader target = new StringReader("pasta"); Query query = morelt.like(idDoc); morelt.setFieldNames(new String[]{"name","descrizione"}); morelt.setMinWordLen(1); morelt.setAnalyzer(new MyAnalyzer()); morelt.setBoost(false); System.out.println("la query è : "+query.toString()); Hits hits = searcher.search(query); /////////////////// int trovati = hits.length(); if (trovati == 0) { System.out.println("Nessun risultato per \"" + "pasta" + "\""); } else { System.out.println("Trovati risultati per \"" + "pasta" + "\" :"); for (int i = 0; i < trovati; i++) { doc = hits.doc(i); System.out.println(" " + (i + 1) + ". " + doc.get("nome")); } } } |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Non conosco Lucene, volevo solo consigliarti di editare il tuo post per racchiudere tra i tag [code] il codice sorgente e identarlo: in questo modo non perdi l'identazione e ai lettori risulta più semplice leggere il tuo codice (io per esempio se vedo codice non racchiuso tra i suddetti tag non lo guardo neanche).
Ciao e in bocca al lupo per il tuo progetto
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Sep 2005
Città: Torino
Messaggi: 606
|
eh già... i tag code....magari se fai una modifica al post qualcuno può pure aiutarti.
Cmq neanch'io conosco lucene, ma se forse spieghi il problema qualcuno potrebbe anche suggerirti una via alternativa.
__________________
"Se proprio dovete piratare un prodotto, preferiamo che sia il nostro piuttosto che quello di qualcun altro." [Jeff Raikes] "Pirating software? Choose Microsoft!" |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 18:22.



















