La búsqueda de texto completo es una forma de buscar un texto/consulta dentro de una colección de documentos. Este enfoque encuentra rápidamente todas las instancias de un término/frase y funciona mediante el uso de índices de texto. En este artículo, aprenderemos cómo buscar mediante programación el texto completo en documentos utilizando Java.

Búsqueda de texto completo

Después de esto, puede implementar varias técnicas de búsqueda y crear su solución de búsqueda para documentos de procesamiento de texto, hojas de cálculo, presentaciones, archivos HTML, archivos PDF, libros electrónicos, mensajes de correo electrónico, archivos ZIP y muchos otros formatos de documentos.

Los siguientes temas se tratan a continuación:

API de Java para búsqueda de texto completo

GroupDocs.Search proporciona una API Java de búsqueda de texto completo que se puede integrar en cualquier aplicación sin depender de ninguna herramienta o software de terceros. Le permite buscar en una gran lista de formatos de documentos. Algunas de las técnicas de búsqueda que se pueden realizar utilizando la API son las siguientes:

  • Búsqueda sensible a mayúsculas y minúsculas
  • Búsqueda de expresiones regulares
  • Facetas de búsqueda
  • Búsqueda borrosa
  • Búsqueda homófona
  • Búsqueda de sinónimos

Descargar o configurar

Puede descargar el archivo JAR de la sección de descargas, o simplemente obtener las configuraciones de dependencia y repositorio más recientes para el pom.xml de sus aplicaciones Java basadas en maven.

<repository>
	<id>GroupDocsJavaAPI</id>
	<name>GroupDocs Java API</name>
	<url>http://repository.groupdocs.com/repo/</url>
</repository>
<dependency>
        <groupId>com.groupdocs</groupId>
        <artifactId>groupdocs-search</artifactId>
        <version>21.3</version> 
</dependency>

Hay dos pasos para realizar la búsqueda dentro de los archivos almacenados en una carpeta.

  • Indexación
  • Realizar búsqueda

Indexar archivos usando Java

Un índice posee el texto escaneado de todos los documentos. Por lo tanto, cuando se va a realizar una operación de búsqueda, solo se referencia el índice, en lugar del texto de los documentos originales. Para que sea posible buscar instantáneamente en miles de documentos con el mismo o diferentes formatos de archivo, debe crear un índice y agregarle estos documentos. Cuando se indexan los documentos, el índice está listo para manejar las consultas de búsqueda.

Las siguientes dos líneas simples crean un índice y también agregan la carpeta de documentos al índice.

Index index = new Index("indexingFolderPath");
index.add("documentsFolderPath");

Después de indexar varios documentos del mismo o diferentes formatos como (Word, PDF, Excel y HTML), podemos avanzar para procesar una consulta de búsqueda específica (término de búsqueda “Dibujar”) sobre ellos. Los siguientes son los pasos para realizar una búsqueda de texto en varios documentos dentro de una carpeta usando Java:

  • Especificar la carpeta de origen de los documentos y la carpeta de índice.
  • Cree Índice utilizando la carpeta de índice.
  • Agregue la carpeta de origen al índice.
  • Preparar la cadena de consulta.
  • Realice una búsqueda usando el método buscar de la clase Index.
  • Recorrer cada resultado de búsqueda de las propiedades de cada documento.

El siguiente código fuente realiza una búsqueda de texto en Java en todos los documentos de la carpeta proporcionada.

// Busque texto específico en múltiples documentos PDF, Word, Excel, HTML dentro de una carpeta usando Java
Index index = new Index("path/indexingFolder");
index.add("path/documentsFolderPath");

// Buscar en el índice un texto específico
SearchResult result = index.search("Draw");

for (int i = 0; i < result.getDocumentCount(); i++) {
    FoundDocument document = result.getFoundDocument(i);
    System.out.println("Document Path: " + document.getDocumentInfo().getFilePath());
    System.out.println("Occurrence : " + document.getOccurrenceCount());
}

Obtendremos la ruta del documento y el número de ocurrencias de los términos de búsqueda en todos los documentos con esa carpeta especificada. Aquí está la captura de pantalla para su visualización.

Salida de texto de búsqueda completa

Resaltar resultados de búsqueda de texto en Java

Realicemos ahora la misma búsqueda de texto completo y también resaltemos todas las ocurrencias que coincidan con su consulta.

Los siguientes pasos muestran cómo resaltar los resultados de la búsqueda de texto:

  • Cree Índice y agregue la carpeta de documentos al índice.
  • Preparar la cadena de consulta.
  • Busque en la carpeta del documento utilizando el método buscar.
  • Mientras recorre los resultados, cree el resaltador usando HtmlHighlighter.
  • Use el método de resaltado para resaltar los resultados de la búsqueda.

El siguiente código genera la salida HTML con resultados de búsqueda resaltados usando Java.

// Resalte los resultados de búsqueda de texto completo de varios documentos en una carpeta en Java
Index index = new Index("path/indexingFolder");
index.add("path/documentsFolderPath"); // Synchronous indexing documents from the specified folder

String query = "draw"; // Specify a search query
SearchResult result = index.search(query); // Searching in the index

for (int i = 0; i < result.getDocumentCount(); i++) 
{
    FoundDocument document = result.getFoundDocument(i);

    String path = "path/Highlighted-"+ i +".html";
    OutputAdapter outputAdapter = new FileOutputAdapter(path); 
    HtmlHighlighter highlighter = new HtmlHighlighter(outputAdapter); // Creating the highlighter
    index.highlight(document, highlighter); // Generates HTML formatted output document with highlighted search results
}

Como salida, obtendremos varios archivos HTML. Cada archivo mostrará el contenido de un documento separado (por ejemplo, excel.xlsx, source.docx, target.docx) con palabras/términos de búsqueda resaltados. A continuación se muestra la salida HTML resaltada de un archivo DOCX, un archivo TXT y un archivo PDF obtenidos con el código anterior.

Resalte los resultados de búsqueda de texto completo en el contenido usando Java

Obtenga una licencia de API gratuita

Puede obtener una licencia temporal gratuita para utilizar la API sin las limitaciones de evaluación.

Conclusión

En este artículo, hemos aprendido a buscar texto dentro de varios documentos de una carpeta en Java. Además, discutimos cómo resaltar mediante programación el texto de los resultados de búsqueda en formato HTML para archivos de MS Word, archivos TXT y archivos PDF usando GroupDocs.Search for Java.

Puede obtener más información sobre la API utilizando documentación. Muchos más ejemplos están disponibles en GitHub. Para consultas, contáctenos a través del foro.

Ver también