Como Configurar a Rede GroupDocs.Search em Java – Boost Search

Em aplicações modernas e intensivas em dados, como configurar o GroupDocs corretamente é a pedra angular para entregar resultados de busca relâmpago e relevantes em enormes repositórios de documentos. Seja construindo um portal corporativo, uma base de conhecimento ou um catálogo de produtos, uma rede GroupDocs.Search bem afinada permite escalar horizontalmente, injetar lógica de sinônimos e manter a latência sob controle. Neste tutorial percorreremos cada passo necessário para configurar, implantar e otimizar uma rede GroupDocs.Search usando Java, além de conselhos práticos para adicionar sinônimos ao índice e lidar com o ciclo de vida dos nós.

Respostas Rápidas

  • Qual é o principal benefício de configurar uma rede GroupDocs.Search? Ela permite indexação e consulta distribuídas, melhorando desempenho e escalabilidade.
  • Preciso de licença para executar os exemplos? Um teste gratuito funciona para desenvolvimento; uma licença comercial é necessária para produção.
  • Sinônimos podem ser adicionados sem reconstruir o índice? Sim—use o dicionário de sinônimos em tempo de execução para add synonyms to index.
  • Quantos nós posso implantar? Você pode implantar quantos nós sua infraestrutura permitir; cada nó roda em sua própria porta.
  • Qual versão do Java é necessária? JDK 8 ou superior é suportado, com compatibilidade total até JDK 21.

O que é configurar uma rede GroupDocs.Search?

A rede GroupDocs.Search é um conjunto de processos JVM que cooperam para indexar e consultar um conjunto de documentos compartilhado. Ela consiste em um nó mestre que orquestra um ou mais nós de trabalho (shards). A rede abstrai o armazenamento subjacente, de modo que uma única consulta é automaticamente broadcast para cada shard e os resultados são mesclados antes de serem retornados ao chamador.

Por que configurar uma rede GroupDocs.Search?

Configurar uma rede GroupDocs.Search oferece três vantagens concretas: escalabilidade, confiabilidade e relevância aprimorada. Ao distribuir a carga de indexação em até 20 nós, cada um manipulando um shard de 5 GB, você pode reduzir o tempo total de indexação em cerca de 70 % comparado a uma configuração de nó único. Adicionar um dicionário de sinônimos melhora a cobertura em até 35 % para consultas que utilizam terminologia alternativa, enquanto a redundância de nós garante 99,9 % de disponibilidade durante janelas de manutenção.

Pré-requisitos

  • Kit de Desenvolvimento Java (JDK) 8 – 21 (qualquer versão LTS)
  • Maven 3.5 + para compilar o projeto
  • Familiaridade com a sintaxe básica de Java e gerenciamento de dependências Maven
  • Acesso à biblioteca GroupDocs.Search for Java (disponível via Maven Central ou na página oficial de releases)

Configurando o GroupDocs.Search para Java

Adicione o repositório e a dependência ao seu pom.xml Maven:

O trecho XML a seguir adiciona o repositório GroupDocs.Search e a dependência da biblioteca.

<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>

Alternativamente, baixe a versão mais recente diretamente de GroupDocs.Search for Java releases.

Aquisição de Licença

  • Free Trial – Explore os recursos principais sem custo.
  • Temporary License – Desbloqueie todas as funcionalidades para testes de curto prazo.
  • Commercial License – Necessária para implantações em produção e para receber suporte premium.

Inicialização e Configuração Básicas

Crie uma classe Java simples para verificar se a biblioteca carrega corretamente:

A classe SampleInitializer demonstra o carregamento do motor GroupDocs.Search.

import com.groupdocs.search.*;

public class SearchSetup {
    public static void main(String[] args) {
        // Initialize the index
        Index index = new Index("YOUR_INDEX_DIRECTORY");

        System.out.println("GroupDocs.Search is ready to use!");
    }
}

Guia Passo a Passo para Configurar a Rede GroupDocs.Search

1. Configurando a Rede de Busca

Defina a pasta base de documentos e a porta inicial para a comunicação dos nós.

SearchNetworkConfig contém a configuração dos nós da rede.

import com.groupdocs.search.dictionaries.*;
import com.groupdocs.search.scaling.configuring.*;

public class ConfigureSearchNetwork {
    public static void run() {
        String basePath = "YOUR_DOCUMENT_DIRECTORY/AdvancedUsage/Scaling/ManagingDictionaries/";
        int basePort = 49128;

        Configuration configuration = ConfiguringSearchNetwork.configure(basePath, basePort);
        
        // Configuration details and setup logic
    }
}
  • basePath – Diretório onde os dicionários (por exemplo, arquivos de sinônimos) residem.
  • basePort – A primeira porta; nós subsequentes incrementam a partir deste valor.

2. Implantando Nós da Rede de Busca

Inicie múltiplos nós de trabalho que compartilham a mesma configuração.

SearchNode representa um nó individual na rede distribuída.

import com.groupdocs.search.scaling.*;

public class DeploySearchNetworkNodes {
    public static void run() {
        String basePath = "YOUR_DOCUMENT_DIRECTORY/AdvancedUsage/Scaling/ManagingDictionaries/";
        int basePort = 49128;
        Configuration configuration = new Configuration();

        SearchNetworkNode[] nodes = SearchNetworkDeployment.deploy(basePath, basePort, configuration);
        
        // Node deployment logic
    }
}

Cada nó roda em sua própria porta (basePort + index) e mantém um shard do índice geral, permitindo processamento paralelo tanto da indexação quanto da execução de consultas.

3. Inscrevendo-se em Eventos de Nó

Monitore a saúde, progresso da indexação e condições de erro ao anexar um listener de eventos ao nó mestre.

NetworkEventListener lida com callbacks para eventos do ciclo de vida dos nós.

import com.groupdocs.search.scaling.*;

public class SubscribeToNodeEvents {
    public static void run() {
        SearchNetworkNode masterNode = new SearchNetworkNode();

        SearchNetworkNodeEvents.subscribe(masterNode);
        
        // Event subscription logic
    }
}

Os callbacks de evento permitem reagir ao início/parada de nós, conclusão da indexação e falhas inesperadas, proporcionando total observabilidade sobre o sistema distribuído.

4. Adicionando Sinônimos ao Indexador de um Nó

Aumente a relevância ao add synonyms to index em tempo de execução.

SynonymDictionary permite adicionar grupos de sinônimos ao indexador.

import com.groupdocs.search.dictionaries.*;
import com.groupdocs.search.scaling.*;

public class AddSynonyms {
    public static void run(SearchNetworkNode node) {
        String[] group = { "efficitur", "tristique", "venenatis" };
        boolean clearBeforeAdding = true;

        Indexer indexer = node.getIndexer();
        int[] indices = node.getShardIndices();
        SynonymDictionary dictionary = indexer.getSynonymDictionary(indices[0]);

        if (clearBeforeAdding) {
            dictionary.clear();
        }
        dictionary.addRange(new String[][] { group });

        indexer.setDictionary(dictionary);
        
        // Synonym addition logic
    }
}
  • group – Array de termos que devem ser tratados como equivalentes.
  • clearBeforeAdding – Defina como true se quiser substituir entradas existentes.

5. Adicionando Diretórios para Indexação

Informe ao nó mestre quais pastas contêm os documentos que devem ser pesquisáveis.

Indexer.addDirectory registra uma pasta para indexação.

import com.groupdocs.search.scaling.*;
import com.groupdocs.search.examples.Utils;

public class AddDirectoriesForIndexing {
    public static void run(SearchNetworkNode masterNode) {
        String documentsPath = "YOUR_DOCUMENT_DIRECTORY/DocumentsPath";

        IndexingDocuments.addDirectories(masterNode, documentsPath);
        
        // Directory addition logic
    }
}

O método varre o diretório recursivamente e distribui os arquivos entre os shards, suportando mais de 10 TB de dados sem carregar arquivos inteiros na memória.

6. Executando Busca de Texto na Rede

Execute uma consulta em todos os nós, opcionalmente forçando comportamento de correspondência exata.

SearchEngine.search executa a consulta na rede.

import com.groupdocs.search.scaling.*;

public class PerformTextSearch {
    public static void run(SearchNetworkNode masterNode) {
        String query = "tristique";
        boolean exactMatchOnly = false;

        TextSearchInNetwork.searchAll(masterNode, query, exactMatchOnly);
        exactMatchOnly = true;
        TextSearchInNetwork.searchAll(masterNode, query, exactMatchOnly);
        
        // Search execution logic
    }
}

Altere exactMatchOnly para true quando precisar de correspondência estrita de termos sem stemming, o que pode melhorar a precisão em cenários de busca de código em até 20 %.

7. Fechando Nós da Rede

Libere recursos de forma graciosa ao concluir o processamento.

node.close() encerra um SearchNode e libera recursos.

import com.groupdocs.search.scaling.*;

public class CloseNetworkNodes {
    public static void run(SearchNetworkNode[] nodes) {
        for (SearchNetworkNode node : nodes) {
            node.close();
            
            // Node closure logic
        }
    }
}

Um desligamento adequado previne vazamentos de memória e mantém a JVM saudável, especialmente em serviços de longa duração que reciclam nós durante períodos de baixa demanda.

Aplicações Práticas

CenárioComo a rede ajuda
Enterprise SearchDistribui a indexação entre servidores de data‑center para corpora em escala de petabytes, atingindo latência de consulta sub‑segundo para mais de 100 M de documentos.
Document ManagementAdiciona sinônimos ao índice para que usuários encontrem documentos mesmo com terminologia variada, aumentando a cobertura em até 35 %.
E‑commerce CatalogImplanta nós específicos por região para servir buscas de produtos localizadas rapidamente, reduzindo o tempo médio de resposta de 250 ms para 80 ms.
Content ManagementMantém o conteúdo pesquisável enquanto editores adicionam novos arquivos a diretórios específicos; a rede re‑indexa incrementalmente sem tempo de inatividade.

Problemas Comuns & Soluções

  • Conflitos de Porta – Garanta que a porta de cada nó (basePort + index) esteja livre; ajuste basePort se necessário.
  • Sinônimo Não Aplicado – Verifique se chamou indexer.setDictionary(dictionary) após adicionar termos; caso contrário, os novos sinônimos não serão considerados durante a busca.
  • Nó Não Respondendo – Inscreva-se em eventos; procure callbacks NodeFailed para diagnosticar problemas de rede.
  • Vazamento de Memória ao Fechar – Sempre invoque node.close() para cada nó implantado; considere usar um bloco try‑with‑resources para limpeza automática.

Perguntas Frequentes

Q: Como a implantação de múltiplos nós melhora o desempenho da busca?
A: Cada nó indexa um shard dos dados, permitindo processamento paralelo e reduzindo a latência das consultas à medida que a carga de trabalho é compartilhada pelo cluster.

Q: Posso adicionar sinônimos sem re‑indexar documentos existentes?
A: Sim, você pode add synonyms to index em tempo de execução via o dicionário de sinônimos; as alterações entram em vigor imediatamente para novas consultas.

Q: Inscrever‑se em eventos de nó é obrigatório?
A: Embora não seja obrigatório para operação básica, a inscrição em eventos fornece visibilidade sobre a saúde dos nós e ajuda a reagir rapidamente a falhas.

Q: Quais são as melhores práticas para gerenciar recursos dos nós?
A: Feche regularmente nós ociosos, monitore o uso de memória da JVM e recicle nós durante horários de baixa demanda para manter o consumo de recursos otimizado.

Q: O GroupDocs.Search suporta formatos não‑textuais como PDFs ou imagens?
A: Absolutamente. A biblioteca extrai texto de PDFs, arquivos Office e realiza OCR em imagens, tornando‑os pesquisáveis prontamente.

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

Tutoriais Relacionados