August 3
Apache Lucene è una libreria motore di ricerca a testo completo scritto in Java. È possibile utilizzare Lucene per indicizzare e ricercare qualsiasi tipo di documento di testo. Per convertire un file Portable Document Format (PDF) file in un formato di testo che Lucene può indice, è possibile utilizzare la classe di origine aperta PDFBox che ha metodi speciali appositamente per Lucene. Basta fornire il nome del file PDF per PDFBox e ottenere un oggetto Document Lucene che può essere aggiunto all'indice e cercato come qualsiasi file di testo.
1 Selezionare un analizzatore di Lucene da utilizzare nella creazione dell'indice, ad esempio "StandardAnalyzer." Creare un oggetto "IndexWriter" per gestire l'aggiunta di nuovi elementi per l'indice, per esempio:
IndexWriter myWriter = new IndexWriter ( "indice", nuova StandardAnalyzer (), true);
2 Call "LucenePDFDocument" per ottenere un oggetto Document Lucene del file PDF. Aggiungere altri campi chiave per l'oggetto e aggiungere l'oggetto al di Lucene. Per esempio:
PDFDoc Document = LucenePDFDocument.getDoument (nome del file);
pdfDoc.add (nuovo campo ( "titolo", pdf.getTitle (), Field.Store.YES, Field.Index.TOKENIZED));
pdfDoc.add (nuovo campo ( "autore", pdf.getAuthor (), Field.Store.YES, Field.Index.TOKENIZED));
myWriter.addDocument (PDFDoc);
3 Utilizzare la classe "SearchEngine" per cercare di Lucene. "SearchEngine" restituisce un Lucene "Hits" oggetto con una lista di oggetti "hit". Per esempio:
SearchEngine MySearch = new SearchEngine ();
Hits myHits = mySearch.performSearch (Testo di ricerca);
System.out.println ( "Documenti trovati:" + myHits.length ());
4 Scorrere gli oggetti "colpo" per avere maggiori informazioni su ogni partita. Gli oggetti "colpo" sono ordinate per rilevanza per la ricerca, e si può anche ottenere il relativo punteggio di ricerca con "getScore ()." Per esempio:
Iterator <Hit> ITR = myHits.iterator ();
while (itr.hasNext ()) {
Hit theHit = itr.next ();
Documento theDoc = theHit.getDocument ();
System.out.println (theDoc.get ( "titolo") + "-" + theHit.getScore ());
}