Resaltar resultados de búsqueda Java – Indexación síncrona y asíncrona

En esta guía descubrirá cómo resaltar resultados de búsqueda Java usando la biblioteca GroupDocs.Search, y verá paso a paso cómo indexar documentos Java tanto de forma síncrona como asíncrona. Ya sea que esté construyendo una pequeña herramienta de escritorio o un servicio de búsqueda empresarial a gran escala, estas técnicas le permiten ofrecer coincidencias instantáneas y visualmente claras sin bloquear los hilos de su aplicación.

Respuestas rápidas

  • ¿Qué significa “highlight search results Java”? Significa envolver cada término coincidente en los fragmentos devueltos con marcado (p. ej., <mark>) para que los usuarios puedan ver instantáneamente el contexto del hallazgo.
  • ¿Cuándo debo usar la indexación síncrona? Úsela para colecciones pequeñas a medianas donde necesita que el documento sea buscable en el momento en que se agrega.
  • ¿Cuándo es preferible la indexación asíncrona? Elíjala para lotes grandes o cuando el hilo de la UI debe permanecer receptivo mientras el índice se construye en segundo plano.
  • ¿Necesito una licencia? Una prueba gratuita funciona para desarrollo; una licencia completa elimina los límites y desbloquea funciones avanzadas.
  • ¿Qué versión de Java es compatible? Java 8 o posterior.

Qué es “highlight search results Java”?

highlight search results java es el proceso de tomar los datos de coincidencia sin procesar de GroupDocs.Search e insertar indicaciones visuales —normalmente etiquetas HTML <mark>— alrededor de cada término encontrado. Esto hace que los fragmentos de resultados sean instantáneamente legibles en una página web o componente Swing, mejorando la experiencia del usuario al mostrar exactamente dónde aparece la consulta.

¿Por qué usar GroupDocs.Search para Java?

GroupDocs.Search ofrece un motor de alto rendimiento y agnóstico al lenguaje que puede procesar hasta 5 000 documentos por segundo, soportar más de 30 formatos de archivo, y indexar colecciones de 10 millones de documentos sin cargar todo el corpus en memoria. Su resaltado incorporado, indexación en tiempo real y analizadores multilingües lo hacen ideal para sistemas de gestión de contenido, catálogos de comercio electrónico y repositorios de documentos empresariales.

Requisitos previos

  • Java Development Kit (JDK 8 o posterior) instalado y JAVA_HOME configurado correctamente.
  • Un IDE como IntelliJ IDEA o Eclipse.
  • Una carpeta (p. ej., documents/) que contenga los archivos que desea indexar—texto plano, PDF, DOCX, etc.
  • Maven para la gestión de dependencias (o puede agregar el JAR manualmente).

Bibliotecas y dependencias requeridas

Agregue GroupDocs.Search a su Maven pom.xml:

<repositories>
    <repository>
        <id>repository.groupdocs.com</id>
        <name>GroupDocs Repository</name>
        <url>https://releases.groupdocs.com/search/java/</url>
    </repository>
</repositories>

<dependencies>
    <dependency>
        <groupId>com.groupdocs</groupId>
        <artifactId>groupdocs-search</artifactId>
        <version>25.4</version>
    </dependency>
</dependencies>

Para descargas directas, obtenga la última versión de GroupDocs.Search for Java releases.

Configuración del entorno

  • Verifique que JAVA_HOME apunte a un JDK compatible.
  • Cree un nuevo proyecto Maven y pegue el fragmento anterior en la sección <dependencies>.
  • Coloque archivos de ejemplo en un directorio como src/main/resources/documents/.

Cómo configurar GroupDocs.Search para Java

Index es la clase central que representa una colección buscable almacenada en disco.

Cree una instancia de Index que apunte a una carpeta en disco, aplique una licencia si la tiene, y opcionalmente configure un analizador para la tokenización específica de idioma. Este paso de preparación garantiza que el motor pueda leer, escribir y buscar en el índice de manera eficiente.

La clase Index es el componente central que representa una colección buscable en disco. Después de instanciarla, todas las operaciones de indexación y consulta fluyen a través de este objeto.

  1. Instalar la biblioteca – Use el fragmento Maven anterior o descargue el JAR de GroupDocs.
  2. Obtener una licencia – Comience con una licencia de prueba; reemplácela con una clave de producción antes del despliegue.
  3. Inicializar el índice – El siguiente fragmento muestra cómo crear (o abrir) una carpeta de índice:
import com.groupdocs.search.Index;

// Create an index in the specified folder
Index index = new Index("path/to/index/folder");

Cómo resaltar resultados de búsqueda Java – indexación síncrona

DocumentHighlighter es una clase de utilidad que genera fragmentos resaltados a partir de los resultados de búsqueda.

Cargue el índice, agregue documentos con index.add(documentPath), ejecute una consulta y luego llame a DocumentHighlighter para envolver las coincidencias en etiquetas <mark>. Todo el proceso se ejecuta en el hilo que llama, por lo que el documento se vuelve buscable inmediatamente después de que add devuelva para los usuarios finales.

Paso 1: crear el índice y adjuntar manejo de errores

import com.groupdocs.search.*;
import com.groupdocs.search.events.*;
import java.nio.file.Paths;

public class SynchronousIndexingFeature {
    public static void main(String[] args) {
        String indexFolder = "YOUR_DOCUMENT_DIRECTORY/SynchronousIndexing";
        String documentsFolder = YOUR_DOCUMENT_DIRECTORY; // Replace with actual directory path

        Index index = new Index(indexFolder);

        // Handle errors
        index.getEvents().ErrorOccurred.add(new EventHandler<IndexErrorEventArgs>() {
            @Override
            public void invoke(Object sender, IndexErrorEventArgs args) {
                System.out.println(args.getMessage());
            }
        });

Paso 2: agregar documentos y ejecutar una búsqueda

        // Add documents
        index.add(documentsFolder);

        // Perform a search
        String query = "tincidunt";
        SearchResult result = index.search(query);

Paso 3: procesar resultados y resaltar resultados de búsqueda Java

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

        // Highlight results
        if (result.getDocumentCount() > 0) {
            FoundDocument document = result.getFoundDocument(0);
            String path = YOUR_OUTPUT_DIRECTORY + "/Highlighted.html";
            OutputAdapter outputAdapter = new FileOutputAdapter(OutputFormat.Html, path);
            DocumentHighlighter highlighter = new DocumentHighlighter(outputAdapter);
            index.highlight(document, highlighter);
        }
    }
}

Cómo resaltar resultados de búsqueda Java – indexación asíncrona

IndexingOptions configura cómo se ejecuta el proceso de indexación, incluyendo modo síncrono o asíncrono.

Configure IndexingOptions para ejecutarse en modo de fondo, suscríbase a los eventos StatusChanged y permita que el motor indexe archivos mientras su UI continúa atendiendo otras solicitudes. Una vez que el estado cambie a Ready, puede ejecutar búsquedas y obtener fragmentos resaltados como en el modo síncrono.

El AsyncIndexingListener recibe actualizaciones de progreso, lo que le permite mostrar una barra de progreso o registrar el estado sin bloquear el hilo principal.

Paso 1: configurar el índice con escuchas de eventos

import com.groupdocs.search.*;
import com.groupdocs.search.events.*;

public class AsynchronousIndexingFeature {
    public static void main(String[] args) {
        String indexFolder = "YOUR_DOCUMENT_DIRECTORY/AsynchronousIndexing";
        String documentsFolder = YOUR_DOCUMENT_DIRECTORY; // Replace with actual directory path

        Index index = new Index(indexFolder);

        // Handle errors and status changes
        index.getEvents().ErrorOccurred.add(new EventHandler<IndexErrorEventArgs>() {
            @Override
            public void invoke(Object sender, IndexErrorEventArgs args) {
                System.out.println(args.getMessage());
            }
        });

        index.getEvents().StatusChanged.add(new EventHandler<BaseIndexEventArgs>() {
            @Override
            public void invoke(Object sender, BaseIndexEventArgs args) {
                if (args.getStatus() != IndexStatus.Ready || args.getStatus() == IndexStatus.Failed) {
                    System.out.println("Indexing completed.");
                }
            }
        });

Paso 2: habilitar modo asíncrono e iniciar la indexación

        // Set up async indexing options
        IndexingOptions options = new IndexingOptions();
        options.setAsync(true);

        // Add documents asynchronously
        index.add(documentsFolder, options);
    }
}

Cómo indexar documentos Java – consejos prácticos

index.update(path) actualiza un documento existente en el índice con el archivo en la ruta especificada.

Divida colecciones grandes en lotes de 1 000–5 000 archivos, filtre por extensión para evitar análisis innecesarios, y use index.update(path) para archivos modificados en lugar de reconstruir todo el índice. Estas prácticas mantienen bajo el uso de memoria y el tiempo de indexación predecible para mantener la consistencia.

  • Tamaño de lote: Para colecciones enormes, divida la carpeta en lotes más pequeños para evitar picos de memoria.
  • Filtros de archivo: Use IndexingOptions.setFileExtensions para incluir solo los formatos que necesita (p. ej., .pdf, .docx).
  • Re‑indexado: Cuando un documento cambia, llame a index.update(documentPath) en lugar de recrear el índice desde cero.

Consideraciones de rendimiento

  • Memoria: Monitoree el uso del heap; aumente -Xmx si procesa muchos archivos grandes simultáneamente.
  • CPU: La indexación asíncrona distribuye la carga de trabajo entre hilos pero aún consume CPU—monitoree el uso con JVisualVM.
  • Resaltado de resultados: El resaltado agrega una sobrecarga modesta (≈ 2–5 ms por resultado). Cache el HTML generado si necesita mostrar los mismos fragmentos repetidamente.

Preguntas frecuentes

Q: ¿Puedo combinar la indexación síncrona y asíncrona en la misma aplicación?
A: Sí. Use la indexación síncrona para conjuntos pequeños y actualizados frecuentemente y la indexación asíncrona para importaciones masivas o trabajos en segundo plano.

Q: ¿Cómo personalizo el estilo de resaltado?
A: Proporcione una implementación personalizada de DocumentHighlighter que escriba las etiquetas HTML, CSS o XML deseadas alrededor de los términos coincidentes.

Q: ¿Qué tipos de archivo admite GroupDocs.Search de forma nativa?
A: Texto, PDF, DOC/DOCX, XLS/XLSX, PPT/PPTX, HTML y muchos más mediante analizadores integrados—más de 30 formatos en total.

Q: ¿Es posible buscar en varios idiomas simultáneamente?
A: Absolutamente. GroupDocs.Search incluye analizadores multilingües; solo configure el Analyzer apropiado al crear el índice.

Q: ¿Cómo aseguro la carpeta del índice?
A: Almacene el índice en un directorio protegido, establezca permisos estrictos del sistema de archivos y, opcionalmente, encripte el índice usando las funciones de seguridad de la biblioteca.


Última actualización: 2026-09-11
Probado con: GroupDocs.Search 25.4 for Java
Autor: GroupDocs

Tutoriales relacionados