Tecnología

Inicio

Cómo indizar y buscar un archivo PDF en Java Con Lucene

Cómo indizar y buscar un archivo PDF en Java Con Lucene


Apache Lucene es una biblioteca de motor de búsqueda de texto completo escrito en Java. Puede utilizar Lucene para indexar y buscar cualquier tipo de documento de texto. Para convertir un formato de documento portátil (PDF) de archivo en un formato de texto que puede Lucene índice, se puede utilizar la clase de código abierto PDFBox que tiene métodos especiales específicamente para Lucene. Sólo es necesario que el nombre del archivo PDF a PDFBox y obtener un objeto de documento Lucene que puede ser añadido al índice y buscó al igual que cualquier archivo de texto.

Instrucciones

1 Seleccionar un analizador de Lucene para utilizar en la creación del índice, por ejemplo "StandardAnalyzer." Crear un objeto "IndexWriter" para manejar la adición de nuevos elementos para el índice, por ejemplo:

IndexWriter myWriter = new IndexWriter ( "índice", nueva StandardAnalyzer (), true);

2 Llamar "LucenePDFDocument" para obtener un objeto de documento Lucene de su archivo PDF. Añadir otros campos clave para el objeto y agregar el objeto con el índice de Lucene. Por ejemplo:

PDFDoc documento LucenePDFDocument.getDoument = (nombre de archivo);

pdfDoc.add (nuevo campo ( "título", pdf.getTitle (), Field.Store.YES, Field.Index.TOKENIZED));

pdfDoc.add (nuevo campo ( "autor", pdf.getAuthor (), Field.Store.YES, Field.Index.TOKENIZED));

myWriter.addDocument (PDFDoc);

3 Utilice la clase "SearchEngine" para buscar el índice Lucene. "SearchEngine" devuelve un Lucene "clics" objeto con una lista de objetos "hit". Por ejemplo:

SearchEngine MySearch = new SearchEngine ();

Golpea myHits = mySearch.performSearch (searchText);

System.out.println ( "Documentos encontrados:" + myHits.length ());

4 Iterar a través de los objetos "éxito" para obtener más información acerca de cada partido. Los objetos "éxito" se ordenan por relevancia a la búsqueda, y también se puede obtener la puntuación de búsqueda en relación con "getScore ()". Por ejemplo:

Iterator <Hit> ITR = myHits.iterator ();

mientras que (itr.hasNext ()) {

Hit theHit = itr.next ();

Documento TheDoc = theHit.getDocument ();

System.out.println (theDoc.get ( "título") + "-" + theHit.getScore ());

}