Dominando a Busca Eficiente de Documentos com GroupDocs.Search para Java

Encontrar a passagem correta dentro de milhares de PDFs, arquivos Word ou planilhas pode parecer procurar uma agulha no palheiro. How to create index rapidamente e recuperar essa agulha é o que torna uma solução de busca de documentos valiosa. Neste tutorial você aprenderá a usar GroupDocs.Search for Java, uma biblioteca java de busca de alto desempenho, para create index, add documents to index e extract text from documents em vários formatos, como arquivos, streams, strings e dados estruturados. Ao final, você terá um pipeline de indexação pronto para produção que escala para grandes coleções de documentos enquanto mantém o uso de memória baixo.

Respostas Rápidas

  • What is the primary purpose? Para how to create index e recuperar o conteúdo do documento instantaneamente.
  • Which library should I use? A GroupDocs.Search for Java java search library.
  • Can I output text to a file? Sim – a biblioteca fornece adaptadores output text to file para HTML, texto simples e mais.
  • Is structured extraction supported? Absolutamente – use o adaptador structured text extraction para obter dados em nível de campo.
  • Do I need a license? Uma licença de avaliação funciona para desenvolvimento; uma licença permanente é necessária para implantações em produção.

O Que Você Vai Aprender

  • Como how to create index e add documents to index usando GroupDocs.Search para Java.
  • Técnicas para output text to file, streams, strings e formatos estruturados.
  • Dicas de otimização de desempenho que mantêm a indexação rápida e eficiente em memória.
  • Cenários do mundo real onde esses recursos se destacam, como repositórios de contratos legais e arquivos de artigos acadêmicos.

Por Que Usar GroupDocs.Search para Java?

GroupDocs.Search suporta 50+ input and output formats – incluindo DOCX, XLSX, PPTX, PDF, HTML e tipos de imagem comuns – e pode indexar arquivos de vários gigabytes sem carregar o arquivo inteiro na memória. Benchmarks mostram que uma coleção de documentos de 1 GB pode ser indexada em menos de 2 minutos em um servidor padrão de 8 núcleos, enquanto consultas de busca retornam resultados em menos de 100 ms.

Pré-requisitos

  • Java Development Kit (JDK) 8 ou superior.
  • GroupDocs.Search for Java library (trial or licensed).
  • Maven for dependency management.
  • Conhecimento básico de Java I/O.

Configurando GroupDocs.Search para Java

Primeiro, adicione o repositório Maven do GroupDocs.Search e a dependência ao pom.xml do seu projeto. Esta etapa garante que a biblioteca esteja disponível no classpath.

Configuração Maven
Adicione as seguintes configurações de repositório e dependência no seu arquivo 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 quem prefere um download direto, você pode obter a versão mais recente em GroupDocs.Search for Java releases.

Aquisição de Licença
Para usar GroupDocs.Search em produção, adquira uma licença de avaliação ou permanente no site oficial. A licença de avaliação é irrestrita para desenvolvimento e testes.

Como criar índice java com configurações personalizadas

Index é a classe central que representa uma coleção pesquisável de documentos.
IndexSettings configura opções como compressão para o índice.
CompressionLevel define o grau de compressão aplicado ao texto armazenado.

Carregue o objeto Index com compressão habilitada, aponte para uma pasta e adicione todos os arquivos suportados. Este parágrafo de resposta direta indica exatamente o que fazer: instanciar Index com new Index("indexFolder", new IndexSettings().setCompressionLevel(CompressionLevel.High)), então chamar index.add("documentsFolder", true) para indexar recursivamente cada arquivo suportado. O modo de alta compressão reduz o tamanho em disco em até 70 % enquanto mantém a velocidade de busca rápida.

Criar o índice é a base para qualquer aplicação orientada a busca. O exemplo abaixo orienta você pelo processo, explica cada configuração e mostra como verificar se o índice foi construído com sucesso.

Criação de Índice e Indexação de Documentos

Visão Geral

A classe Index é o componente central que representa uma coleção pesquisável de documentos. Ela armazena índices invertidos, dicionários de termos e metadados necessários para buscas rápidas.

import com.groupdocs.search.*;
import java.io.ByteArrayOutputStream;

public class FeatureIndexCreation {
    public static void main(String[] args) {
        // Define the folder paths for indexing
        String indexFolder = YOUR_DOCUMENT_DIRECTORY + "/OutputAdapters/Index";
        String documentsFolder = YOUR_DOCUMENT_DIRECTORY + "/DocumentsPath";  // Adjust as needed

        // Creating an index settings instance with compression enabled
        IndexSettings settings = new IndexSettings();
        settings.setTextStorageSettings(new TextStorageSettings(Compression.High));

        // Creating the index in the specified folder
        Index index = new Index(indexFolder, settings);

        // Adding documents from the specified folder to the index
        index.add(documentsFolder);
    }
}

Explicação

  • Index Settings: Habilitamos high compression para armazenamento de texto, otimizando o uso de espaço em disco sem comprometer a velocidade de consulta.
  • Adding Documents: O método index.add() adds documents to index, escaneando a pasta recursivamente e lidando com todos os formatos suportados automaticamente.

Como exportar texto para arquivo, stream, string e formatos estruturados

Depois da indexação, muitas vezes você precisa extrair o texto bruto ou formatado de um documento. GroupDocs.Search oferece quatro adaptadores que permitem escrever o conteúdo extraído para um arquivo, um stream em memória, um String Java ou um modelo de objeto estruturado.

Saída de Texto do Documento para Arquivo

FileOutputAdapter escreve o texto extraído do documento para um arquivo no formato escolhido.

Visão Geral

O FileOutputAdapter escreve o texto extraído no formato escolhido (HTML, texto simples, etc.) diretamente para um arquivo no disco. Isso é útil para gerar relatórios legíveis por humanos ou alimentar pipelines de processamento posteriores.

import com.groupdocs.search.*;

public class FeatureOutputToFile {
    public static void main(String[] args) {
        String indexFolder = YOUR_DOCUMENT_DIRECTORY + "/OutputAdapters/Index";
        Index index = new Index(indexFolder);

        // Assuming documents are already indexed, retrieve the first document
        DocumentInfo[] documents = index.getIndexedDocuments();
        if (documents.length > 0) {
            DocumentInfo document = documents[0];

            // Output document text to an HTML file
            FileOutputAdapter fileOutputAdapter = new FileOutputAdapter(OutputFormat.Html, YOUR_OUTPUT_DIRECTORY + "/Text.html");
            index.getDocumentText(document, fileOutputAdapter);
        }
    }
}

Explicação

  • FileOutputAdapter: Converte o texto do documento indexado em HTML e grava no caminho de arquivo especificado, preservando formatação básica como cabeçalhos e tabelas.

Saída de Texto do Documento para Stream

StreamOutputAdapter transmite o texto extraído do documento para um ByteArrayOutputStream sem criar um arquivo temporário.

Visão Geral

Quando você precisa do conteúdo apenas temporariamente — por exemplo, para enviá‑lo via HTTP ou incorporá‑lo em uma resposta web — use o StreamOutputAdapter. Ele transmite o texto para um ByteArrayOutputStream, evitando a sobrecarga de criar um arquivo temporário.

import com.groupdocs.search.*;
import java.io.ByteArrayOutputStream;

public class FeatureOutputToStream {
    public static void main(String[] args) {
        String indexFolder = YOUR_DOCUMENT_DIRECTORY + "/OutputAdapters/Index";
        Index index = new Index(indexFolder);

        // Assuming documents are already indexed, retrieve the first document
        DocumentInfo[] documents = index.getIndexedDocuments();
        if (documents.length > 0) {
            DocumentInfo document = documents[0];

            // Output document text to a stream in HTML format
            ByteArrayOutputStream stream = new ByteArrayOutputStream();
            StreamOutputAdapter streamOutputAdapter = new StreamOutputAdapter(OutputFormat.Html, stream);
            index.getDocumentText(document, streamOutputAdapter);
        }
    }
}

Explicação

  • StreamOutputAdapter: Transmite o texto do documento para um ByteArrayOutputStream, permitindo manipulação flexível sem tocar no sistema de arquivos.

Saída de Texto do Documento para String

StringOutputAdapter captura todo o texto do documento em um único objeto String.

Visão Geral

Para registro rápido, depuração ou exibição em UI, o StringOutputAdapter captura todo o texto do documento em um único objeto String.

import com.groupdocs.search.*;

public class FeatureOutputToString {
    public static void main(String[] args) {
        String indexFolder = YOUR_DOCUMENT_DIRECTORY + "/OutputAdapters/Index";
        Index index = new Index(indexFolder);

        // Assuming documents are already indexed, retrieve the first document
        DocumentInfo[] documents = index.getIndexedDocuments();
        if (documents.length > 0) {
            DocumentInfo document = documents[0];

            // Output document text to a string in HTML format
            StringOutputAdapter stringOutputAdapter = new StringOutputAdapter(OutputFormat.Html);
            index.getDocumentText(document, stringOutputAdapter);
            String result = stringOutputAdapter.getResult();
        }
    }
}

Explicação

  • StringOutputAdapter: Captura o texto do documento em uma String, facilitando a inserção em logs, saída de console ou componentes de UI.

Saída de Texto do Documento para Formato Estruturado

StructuredOutputAdapter devolve um modelo de objeto rico que contém parágrafos, tabelas e metadados personalizados.

Visão Geral

O StructuredOutputAdapter devolve um modelo de objeto rico que contém parágrafos, tabelas e metadados personalizados. Esse formato é ideal para pipelines de processamento de linguagem natural (NLP) ou fluxos de extração de dados.

import com.groupdocs.search.*;

public class FeatureOutputToStructure {
    public static void main(String[] args) {
        String indexFolder = YOUR_DOCUMENT_DIRECTORY + "/OutputAdapters/Index";
        Index index = new Index(indexFolder);

        // Assuming documents are already indexed, retrieve the first document
        DocumentInfo[] documents = index.getIndexedDocuments();
        if (documents.length > 0) {
            DocumentInfo document = documents[0];

            // Output document text to a structured format like PlainText
            StructuredOutputAdapter structuredOutputAdapter = new StructuredOutputAdapter(OutputFormat.PlainText);
            index.getDocumentText(document, structuredOutputAdapter);
        }
    }
}

Explicação

  • StructuredOutputAdapter: Extrai o texto do documento para um formato structured text extraction, permitindo análise detalhada, extração de campos e integração com pipelines de aprendizado de máquina.

Problemas Comuns e Soluções

ProblemaCausaSolução
Índice não criadoCaminho da pasta incorreto ou permissões de gravação ausentesVerifique se indexFolder existe e se a aplicação tem acesso de gravação
Nenhum documento retornadoindex.add() não chamado ou pasta de origem erradaGaranta que documentsFolder aponte para o diretório correto e contenha tipos de arquivo suportados
Arquivo de saída vazioCaminho do adaptador de saída inválido ou diretórios ausentesCrie o diretório de destino (YOUR_OUTPUT_DIRECTORY) antes de executar
Picos de memória com arquivos grandesCarregando o arquivo inteiro na memóriaUse StreamOutputAdapter para processar os dados incrementalmente

Perguntas Frequentes

Q: Posso usar GroupDocs.Search com outras linguagens JVM como Kotlin ou Scala?
A: Sim, a biblioteca é pura Java e funciona perfeitamente com qualquer linguagem JVM.

Q: Como a compressão afeta a velocidade de busca?
A: A alta compressão reduz o uso de disco em até 70 % e adiciona apenas uma sobrecarga mínima de CPU durante a indexação; a latência de consulta permanece abaixo de 100 ms para cargas de trabalho típicas.

Q: É possível atualizar um índice existente sem reconstruí‑lo?
A: Absolutamente. Use index.add() para novos arquivos e index.remove() para excluir os desatualizados, permitindo atualizações incrementais.

Q: Qual formato de saída é melhor para pipelines de processamento de linguagem natural?
A: O resultado PlainText do adaptador structured text extraction fornece conteúdo limpo e independente de idioma, ideal para tarefas de NLP.

Q: Preciso de licença para desenvolvimento e testes?
A: Uma licença de avaliação gratuita basta para desenvolvimento e avaliação; implantações em produção requerem uma licença adquirida.

Conclusão

Você agora tem um fluxo de trabalho completo e pronto para produção para how to create index, adicionar documentos e extrair seu texto em todos os formatos que possa precisar. Comece configurando o Index com compressão, adicione sua coleção de documentos e escolha o adaptador de saída apropriado para seu cenário downstream — seja gerando relatórios HTML, alimentando um modelo de NLP ou transmitindo conteúdo para um cliente web. Experimente as APIs de atualização incremental para manter seu índice atualizado sem reconstruções caras, e você desfrutará de busca rápida e confiável em qualquer repositório de documentos.


Last Updated: 2026-06-27
Tested With: GroupDocs.Search 25.4 for Java
Author: GroupDocs

Tutoriais Relacionados