Destaque de resultados de pesquisa Java – Indexação síncrona e assíncrona

Neste guia você descobrirá como highlight search results Java usando a biblioteca GroupDocs.Search, e verá passo a passo como indexar documentos Java tanto de forma síncrona quanto assíncrona. Seja construindo uma pequena ferramenta desktop ou um serviço de busca empresarial em grande escala, essas técnicas permitem entregar correspondências instantâneas e visualmente claras sem bloquear as threads da sua aplicação.

Respostas rápidas

  • O que significa “highlight search results Java”? Significa envolver cada termo correspondido nos trechos retornados com marcação (por exemplo, <mark>) para que os usuários possam ver instantaneamente o contexto da ocorrência.
  • Quando devo usar indexação síncrona? Use para coleções pequenas a médias onde você precisa que o documento esteja pesquisável no momento em que é adicionado.
  • Quando a indexação assíncrona é preferível? Escolha-a para lotes grandes ou quando a thread da UI deve permanecer responsiva enquanto o índice é construído em segundo plano.
  • Preciso de uma licença? Um teste gratuito funciona para desenvolvimento; uma licença completa remove limites e desbloqueia recursos avançados.
  • Qual versão do Java é suportada? Java 8 ou posterior.

O que é “highlight search results Java”?

highlight search results java é o processo de pegar os dados brutos de correspondência do GroupDocs.Search e inserir pistas visuais—tipicamente tags HTML <mark>—ao redor de cada termo encontrado. Isso torna os trechos de resultado instantaneamente legíveis em uma página web ou componente Swing, melhorando a experiência do usuário ao mostrar exatamente onde a consulta aparece.

Por que usar GroupDocs.Search para Java?

GroupDocs.Search oferece um mecanismo de alto desempenho e independente de idioma que pode processar até 5 000 documentos por segundo, suportar mais de 30 formatos de arquivo, e indexar coleções de 10 milhões de documentos sem carregar todo o corpus na memória. Seu destaque embutido, indexação em tempo real e analisadores multilíngues o tornam ideal para sistemas de gerenciamento de conteúdo, catálogos de e‑commerce e repositórios de documentos empresariais.

Pré-requisitos

  • Java Development Kit (JDK 8 ou mais recente) instalado e JAVA_HOME corretamente configurado.
  • Uma IDE como IntelliJ IDEA ou Eclipse.
  • Uma pasta (por exemplo, documents/) contendo os arquivos que você deseja indexar—texto simples, PDF, DOCX, etc.
  • Maven para gerenciamento de dependências (ou você pode adicionar o JAR manualmente).

Bibliotecas e dependências necessárias

Add GroupDocs.Search to your 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 downloads diretos, obtenha a versão mais recente em GroupDocs.Search for Java releases.

Configuração do ambiente

  • Verifique se JAVA_HOME aponta para um JDK compatível.
  • Crie um novo projeto Maven e cole o trecho acima na seção <dependencies>.
  • Coloque arquivos de exemplo em um diretório como src/main/resources/documents/.

Como configurar o GroupDocs.Search para Java

Index é a classe central que representa uma coleção pesquisável armazenada em disco.

Crie uma instância Index apontando para uma pasta no disco, aplique uma licença se você tiver uma, e opcionalmente configure um analisador para tokenização específica de idioma. Esta etapa de preparação garante que o mecanismo possa ler, gravar e pesquisar o índice de forma eficiente.

A classe Index é o componente central que representa uma coleção pesquisável em disco. Depois de instanciá‑la, todas as operações de indexação e consulta fluem através desse objeto.

  1. Instalar a biblioteca – Use o trecho Maven acima ou baixe o JAR em GroupDocs.
  2. Obter uma licença – Comece com uma licença de avaliação; substitua‑a por uma chave de produção antes da implantação.
  3. Inicializar o índice – O trecho a seguir mostra como criar (ou abrir) uma pasta de índice:
import com.groupdocs.search.Index;

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

Como destacar resultados de pesquisa Java – indexação síncrona

DocumentHighlighter é uma classe utilitária que gera trechos destacados a partir dos resultados de pesquisa.

Carregue o índice, adicione documentos com index.add(documentPath), execute uma consulta e então chame DocumentHighlighter para envolver as correspondências em tags <mark>. Todo o processo roda na thread chamadora, portanto o documento se torna pesquisável imediatamente após o retorno de add para os usuários finais.

Etapa 1: criar o índice e anexar tratamento de erros

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());
            }
        });

Etapa 2: adicionar documentos e executar uma pesquisa

        // Add documents
        index.add(documentsFolder);

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

Etapa 3: processar resultados e destacar resultados de pesquisa 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);
        }
    }
}

Como destacar resultados de pesquisa Java – indexação assíncrona

IndexingOptions configura como o processo de indexação é executado, incluindo modo síncrono ou assíncrono.

Configure o IndexingOptions para executar em modo de plano de fundo, inscreva‑se nos eventos StatusChanged e deixe o mecanismo indexar arquivos enquanto sua UI continua a atender outras solicitações. Quando o status mudar para Ready, você pode executar buscas e obter trechos destacados assim como no modo síncrono.

O AsyncIndexingListener recebe atualizações de progresso, permitindo exibir uma barra de progresso ou registrar o status sem bloquear a thread principal.

Etapa 1: configurar o índice com ouvintes 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.");
                }
            }
        });

Etapa 2: habilitar modo assíncrono e iniciar a indexação

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

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

Como indexar documentos Java – dicas práticas

index.update(path) atualiza um documento existente no índice com o arquivo no caminho especificado.

Divida grandes coleções em lotes de 1 000–5 000 arquivos, filtre por extensão para evitar parsing desnecessário, e use index.update(path) para arquivos alterados em vez de reconstruir todo o índice. Essas práticas mantêm o uso de memória baixo e o tempo de indexação previsível para manter a consistência.

  • Tamanho do lote: Para coleções enormes, divida a pasta em lotes menores para evitar picos de memória.
  • Filtros de arquivo: Use IndexingOptions.setFileExtensions para incluir apenas os formatos que você precisa (por exemplo, .pdf, .docx).
  • Re‑indexação: Quando um documento mudar, chame index.update(documentPath) ao invés de recriar o índice do zero.

Considerações de desempenho

  • Memória: Monitore o uso do heap; aumente -Xmx se você processar muitos arquivos grandes simultaneamente.
  • CPU: A indexação assíncrona distribui a carga de trabalho entre threads, mas ainda consome CPU—acompanhe o uso com JVisualVM.
  • Destaque de resultados: O destaque adiciona uma sobrecarga modesta (≈ 2–5 ms por resultado). Cache o HTML gerado se precisar exibir os mesmos trechos repetidamente.

Perguntas frequentes

Q: Posso combinar indexação síncrona e assíncrona na mesma aplicação?
A: Sim. Use indexação síncrona para conjuntos pequenos e frequentemente atualizados e indexação assíncrona para importações em massa ou tarefas em segundo plano.

Q: Como personalizo o estilo de destaque?
A: Forneça uma implementação personalizada de DocumentHighlighter que escreva o HTML, CSS ou tags XML desejadas ao redor dos termos correspondidos.

Q: Quais tipos de arquivo o GroupDocs.Search suporta nativamente?
A: Texto, PDF, DOC/DOCX, XLS/XLSX, PPT/PPTX, HTML e muitos mais via analisadores integrados—mais de 30 formatos no total.

Q: É possível pesquisar em vários idiomas simultaneamente?
A: Absolutamente. O GroupDocs.Search inclui analisadores multilíngues; basta configurar o Analyzer apropriado ao criar o índice.

Q: Como protejo a pasta do índice?
A: Armazene o índice em um diretório protegido, defina permissões estritas no sistema de arquivos e, opcionalmente, criptografe o índice usando os recursos de segurança da biblioteca.


Última atualização: 2026-09-11
Testado com: GroupDocs.Search 25.4 for Java
Autor: GroupDocs

Tutoriais relacionados