Apache Lucene ist ein full-featured Textsuchmaschine Bibliothek in Java geschrieben. Sie können Lucene zu indizieren und suchen jede Art von Text-Dokument . Um eine Portable Document Format (PDF) -Datei in einem Text -Format zu konvertieren , dass Lucene Index kann , können Sie das Open-Source- PDFBox Klasse, die speziellen Methoden hat speziell für Lucene verwenden . Geben Sie einfach die PDF-Datei Namen PDFBox und einen Lucene Document -Objekt, das in den Index aufgenommen werden kann, und suchte wie jede Textdatei. Anleitung
1
auswählen Lucene Analysator bei der Schaffung des Index zu verwenden , zum Beispiel " StandardAnalyzer . " Neues " IndexWriter " Objekt zu handhaben Hinzufügen neuer Elemente in den Index , zum Beispiel:
IndexWriter myWriter = new IndexWriter ( "index" , neue StandardAnalyzer () , true);
2 < p> Rufen " LucenePDFDocument ", um eine Lucene Document Objekt Ihrer PDF -Datei zu erhalten . In anderen wichtigen Bereichen auf das Objekt , und fügen Sie das Objekt an die Lucene -Index . Zum Beispiel:
Dokument pdfdoc = LucenePDFDocument.getDoument ( filename);
pdfDoc.add (new Field ( "title" , pdf.getTitle () , Field.Store.YES , Field. Index.TOKENIZED ) );
pdfDoc.add (new Field ( "Autor" , pdf.getAuthor () , Field.Store.YES , Field.Index.TOKENIZED ) );
myWriter . addDocument ( pdfdoc );
3
Benutzen Sie den " SearchEngine " Klasse, um den Lucene Index zu durchsuchen . " SearchEngine " gibt einen Lucene " Hits" Objekt mit einer Liste der " Hit "-Objekte . Zum Beispiel:
SearchEngine MySearch = new SearchEngine ();
Hits myHits = mySearch.performSearch ( searchText );
System.out.println ( "Documents abgestimmt : " + myHits.length ());
4
durch die " Hit "-Objekte durchlaufen, um weitere Informationen über jedes Spiel zu bekommen. Die " Hit "-Objekte werden von Relevanz für die Suche bestellt , und Sie können sich auch die relative Punktzahl Suche mit " getScore (). " Zum Beispiel:
Iterator itr = myHits.iterator ();
while ( itr.hasNext ()) {
Hit theHit = itr.next () ;
Dokument thedoc = theHit.getDocument ();
System.out.println ( theDoc.get ( "title" ) + " - " + theHit.getScore ());
}