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
| Problema | Causa | Solução |
|---|---|---|
| Índice não criado | Caminho da pasta incorreto ou permissões de gravação ausentes | Verifique se indexFolder existe e se a aplicação tem acesso de gravação |
| Nenhum documento retornado | index.add() não chamado ou pasta de origem errada | Garanta que documentsFolder aponte para o diretório correto e contenha tipos de arquivo suportados |
| Arquivo de saída vazio | Caminho do adaptador de saída inválido ou diretórios ausentes | Crie o diretório de destino (YOUR_OUTPUT_DIRECTORY) antes de executar |
| Picos de memória com arquivos grandes | Carregando o arquivo inteiro na memória | Use 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