Apache Lucene est un texte bibliothèque de moteur de recherche complet, écrit en Java. Vous pouvez utiliser Lucene pour indexer et rechercher tout type de document texte. Pour convertir un fichier Portable Document Format (PDF ) dans un format de texte qui peut Lucene index, vous pouvez utiliser la classe open source PDFBox qui possède des méthodes spécifiquement pour Lucene. Il suffit de fournir le nom du fichier PDF à PDFBox et obtenir un objet Document Lucene qui peut être ajouté à l'indice et fouillé comme n'importe quel fichier texte. Instructions
1
Sélectionnez un analyseur Lucene à utiliser dans la création de l' index, par exemple " StandardAnalyzer . " Créer un objet " IndexWriter " pour gérer l'ajout de nouveaux éléments à l'index, par exemple :
IndexWriter myWriter = new IndexWriter ( "index" , nouveau StandardAnalyzer () , true);
2 < p> Appel " LucenePDFDocument " pour obtenir un objet Document Lucene de votre fichier PDF . Ajouter d'autres domaines clés de l'objet et ajouter l'objet à l'index Lucene. Par exemple:
document PDFDoc = LucenePDFDocument.getDoument (filename) ;
pdfDoc.add ( nouveau champ ( "title" , pdf.getTitle (), Field.Store.YES , Field. Index.TOKENIZED ) ) ;
pdfDoc.add ( nouveau champ ( " auteur " , pdf.getAuthor (), Field.Store.YES , Field.Index.TOKENIZED ) ) ;
myWriter . addDocument ( pDFDoc ) ;
3
Utilisez la classe " SearchEngine " pour rechercher l'index Lucene. " SearchEngine " retourne un objet " Hits " Lucene avec une liste d' objets " hit" . Par exemple:
SearchEngine MySearch = new SearchEngine ();
Visites myHits = mySearch.performSearch ( searchText ) ;
System.out.println (" Documents présents: " + myHits.length ());
4
parcourir les objets " hit" pour obtenir plus d'informations sur chaque match. Les objets " de vie " sont classés par pertinence à la recherche , et vous pouvez également obtenir la note de recherche relatif à " getScore (). " Par exemple:
Iterator ITR = myHits.iterator ();
while ( itr.hasNext ()) {
Hit theHit = itr.next () ;
document thedoc = theHit.getDocument ();
System.out.println ( theDoc.get ( "title" ) + "-" + theHit.getScore ()); < br >
}