Como implementar pesquisa de texto completo java com GroupDocs.Search

Na era das aplicações orientadas a dados, java full text search é essencial para transformar coleções massivas de documentos em bases de conhecimento pesquisáveis instantaneamente. Seja construindo um portal de nível empresarial ou um utilitário de desktop leve, uma rede de pesquisa bem configurada pode reduzir a latência das consultas de segundos para milissegundos e manter os resultados relevantes à medida que os dados crescem. Este tutorial orienta você na implantação do GroupDocs.Search for Java, na adição de arquivos à pesquisa, na configuração de diretórios nos nós e na habilitação da indexação em tempo real para que seu índice permaneça atualizado sem intervenção manual.

Por que isso importa: Um índice de java full text search reduz a latência das consultas, escala com o volume de dados e traz recursos poderosos de texto completo para qualquer solução baseada em Java — portais web, aplicativos desktop ou microsserviços em nuvem.

Respostas rápidas

  • Qual é o objetivo principal do GroupDocs.Search? Ele fornece um motor de busca java escalável que indexa e pesquisa documentos em uma rede distribuída.
  • Qual versão devo usar? A versão estável mais recente (por exemplo, 25.4) é recomendada para novos projetos.
  • Preciso de uma licença? Um teste gratuito de 30 dias está disponível; uma licença permanente é necessária para uso em produção.
  • Posso adicionar tanto arquivos quanto diretórios inteiros? Sim – use os auxiliares addFiles e addDirectories para ingerir o conteúdo.
  • Qual versão do Java é necessária? Java 8 ou superior, com Maven para gerenciamento de dependências.
  • Como funciona a indexação em tempo real java? Ao assinar eventos do nó, você pode disparar a reindexação automática quando os arquivos são alterados.

O que é “create searchable index java”?

Criar um índice pesquisável em Java significa construir uma estrutura de dados que mapeia termos para os documentos que os contêm, permitindo consultas de texto completo rápidas. GroupDocs.Search for Java abstrai o trabalho pesado, permitindo que você se concentre em alimentar documentos e ajustar o comportamento da pesquisa.

Por que usar GroupDocs.Search for Java?

GroupDocs.Search oferece um motor de busca java que escala horizontalmente, suporta mais de 50 formatos de entrada e saída, e oferece indexação orientada a eventos. Implantar múltiplos nós distribui a carga de indexação, enquanto verificações de integridade incorporadas mantêm a rede confiável. Também fornece APIs RESTful e analisadores personalizáveis para relevância afinada.

Pré-requisitos

  • JDK 8+ instalado na sua máquina de desenvolvimento.
  • Uma IDE como IntelliJ IDEA ou Eclipse.
  • Conhecimento básico de Java e Maven.
  • Acesso à biblioteca GroupDocs.Search for Java (download ou Maven).

Configurando GroupDocs.Search for Java

Dependência Maven

Adicione o repositório e a dependência ao seu 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>

Dica profissional: Mantenha o número da versão atualizado verificando a página oficial de lançamentos.

Você também pode baixar o JAR diretamente do site oficial: GroupDocs.Search for Java releases.

Aquisição de licença

  • Teste gratuito: avaliação de 30 dias.
  • Licença temporária: Solicite para testes prolongados.
  • Compra: Necessária para implantações em produção.

Inicialização básica

Crie um objeto de configuração que aponta para uma pasta onde os arquivos de índice serão armazenados e define a porta de comunicação base:

import com.groupdocs.search.Configuration;

class InitializeSearch {
    public static void main(String[] args) {
        String basePath = "your/base/path";
        int basePort = 8080;
        
        Configuration config = new ConfiguringSearchNetwork().configure(basePath, basePort);
        // Use this configuration for subsequent operations
    }
}

Como criar índice pesquisável java com GroupDocs.Search?

Carregue um objeto SearchConfiguration, inicie um SearchNetworkNode e chame node.getIndexer().addFiles(...) para preencher o índice. Esse padrão de uma linha inicia uma rede de pesquisa de texto completo java totalmente funcional, pronta para aceitar consultas imediatamente. Você pode então escalar adicionando mais nós que compartilham o mesmo caminho base e intervalo de portas.

Recurso 1 – configuração e configuração de rede

A classe SearchConfiguration contém todas as configurações necessárias para iniciar um nó.

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

class ConfiguringSearchNetwork {
    public static Configuration configure(String basePath, int basePort) {
        // Configure the search network with specified base path and port
        return new Configuration(basePath, basePort);
    }
}
  • basePath – Diretório onde os dados do índice serão persistidos.
  • basePort – Porta inicial; cada nó incrementará a partir desse valor.

Recurso 2 – implantação de nós da rede de pesquisa

SearchNetworkNode representa um serviço de indexação individual que pode ser executado em qualquer máquina.

import com.groupdocs.search.scaling.*;

class SearchNetworkDeployment {
    public static SearchNetworkNode[] deploy(String basePath, int basePort, Configuration configuration) {
        // Deploy nodes based on the provided configuration
        return new SearchNetworkNode[]{new SearchNetworkNode()};
    }
}

SearchNetworkNode é o componente central em tempo de execução que hospeda um índice, processa eventos de adição/remoção e responde a consultas de pesquisa. Implantar múltiplos nós permite que você create java full text search clusters que escalam horizontalmente.

Recurso 3 – assinando eventos do nó

Atualizações em tempo real mantêm o índice sincronizado com as alterações do sistema de arquivos.

import com.groupdocs.search.scaling.*;

class SearchNetworkNodeEvents {
    public static void subscribe(SearchNetworkNode node) {
        // Logic to subscribe to the specified node's events
    }
}

Ao ouvir os eventos, você pode disparar automaticamente a reindexação quando novos arquivos chegam, alcançando event driven indexing sem scripts manuais.

Recurso 4 – adicionando diretórios ao nó da rede

Use este auxiliar para add directories to node, coletando recursivamente todos os documentos suportados.

import java.io.File;
import java.util.ArrayList;

class DirectoryAdder {
    public static void addDirectories(SearchNetworkNode node, String... directoryPaths) {
        ArrayList<String> files = new ArrayList<>();
        for (String directoryPath : directoryPaths) {
            final File folder = new File(directoryPath);
            listFiles(folder, files);
        }
        addFiles(node, files.toArray(new String[0]));
    }

    private static void listFiles(final File folder, ArrayList<String> list) {
        for (final File fileEntry : folder.listFiles()) {
            if (fileEntry.isDirectory()) {
                listFiles(fileEntry, list);
            } else {
                list.add(fileEntry.getPath());
            }
        }
    }
}

Recurso 5 – adicionando arquivos ao nó da rede

Quando precisar de controle granular, add files to search individualmente:

import com.groupdocs.search.Document;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Date;
import org.apache.commons.io.FilenameUtils;
import com.groupdocs.search.Indexer;
import com.groupdocs.search.options.*;

class FileAdder {
    public static void addFiles(SearchNetworkNode node, String... filePaths) {
        try {
            InputStream[] streams = new FileInputStream[filePaths.length];
            Document[] documents = new Document[filePaths.length];
            for (int i = 0; i < filePaths.length; i++) {
                String filePath = filePaths[i];
                InputStream stream = new FileInputStream(filePath);
                streams[i] = stream;
                
                // Create a document from the input stream
                String fileName = FilenameUtils.getName(filePath);
                String extension = "." + FilenameUtils.getExtension(filePath);
                Document document = Document.createFromStream(
                    fileName,
                    new Date(),
                    extension,
                    stream);
                documents[i] = document;
            }

            // Initialize the indexer and configure options
            Indexer indexer = node.getIndexer();
            IndexingOptions options = new IndexingOptions();
            options.setUseRawTextExtraction(false);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

Casos de uso comuns

  • Portais corporativos de documentos que precisam de pesquisa instantânea em milhares de PDFs e arquivos Office.
  • Plataformas de e‑discovery jurídico onde novas evidências são continuamente adicionadas e devem ser pesquisáveis em tempo real.
  • Sistemas de gerenciamento de conteúdo que armazenam imagens, apresentações e planilhas e requerem pesquisa de texto completo.

Problemas comuns & soluções

IssueReasonFix
Nenhum documento aparece nos resultados da pesquisaÍndice não foi confirmadoChame node.getIndexer().commit() após adicionar arquivos.
Erro de conflito de portaOutro serviço usa basePortEscolha um basePort diferente ou verifique portas livres.
Formato de arquivo não suportadoA biblioteca não possui analisadorCertifique-se de que a extensão do arquivo é suportada ou adicione um extrator personalizado.

Dicas de solução de problemas

  • Verifique a saúde do nó: Use o endpoint de verificação de integridade incorporado (http://localhost:{port}/health) para confirmar que cada nó está em execução.
  • Monitore o uso de memória: Grandes lotes de documentos podem aumentar o consumo de memória; indexe em blocos menores e chame commit() periodicamente.
  • Verifique os logs: GroupDocs.Search grava logs detalhados na pasta basePath — reveja-os para erros de análise ou tempos de espera de rede.

Perguntas frequentes

Q: Posso usar GroupDocs.Search em uma aplicação Java baseada em nuvem?
A: Sim. A biblioteca funciona com qualquer runtime Java, e você pode apontar basePath para uma pasta montada em rede ou um armazenamento em nuvem.

Q: Como atualizo o índice quando um arquivo é alterado?
A: Assine os eventos do nó (veja o Recurso 3) e chame addFiles ou addDirectories novamente para os caminhos modificados.

Q: Existe um limite para o número de nós que posso implantar?
A: Na prática, o limite é definido pelo seu hardware e largura de banda da rede. A API não impõe um limite rígido.

Q: Preciso reiniciar os nós após adicionar novos arquivos?
A: Não. A adição de arquivos dispara a indexação automaticamente; você só precisa confirmar se adiar a operação.

Q: Quais formatos de documento são suportados nativamente?
A: PDFs, DOC/DOCX, XLS/XLSX, PPT/PPTX, TXT, HTML e muitos tipos de imagem — mais de 50 formatos no total.

Q: Como posso habilitar a indexação em tempo real java para uma pasta que recebe uploads continuamente?
A: Implemente um observador de sistema de arquivos (por exemplo, java.nio.file.WatchService) que chame DirectoryAdder.addDirectories(node, path) sempre que um novo arquivo for detectado.


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

Tutoriais Relacionados