Use uma licença temporária para indexação baseada em blocos em Java
Neste tutorial você usará uma licença temporária para adicionar documentos ao índice com o recurso de pesquisa baseada em blocos do GroupDocs.Search. A abordagem permite lidar com coleções massivas de documentos—contratos legais, tickets de suporte, artigos de pesquisa—enquanto mantém o uso de memória do índice de pesquisa java baixo e aumenta o desempenho da pesquisa drasticamente. Você verá como configurar a pasta do índice, alimentar múltiplas fontes de documentos, habilitar a pesquisa por blocos e executar tanto a primeira quanto as consultas subsequentes de blocos.
Respostas Rápidas
- Qual é o primeiro passo? Crie uma pasta de índice de pesquisa.
- Como incluo muitos arquivos? Use
index.add()para cada pasta de documentos. - Qual opção habilita a pesquisa por blocos?
options.setChunkSearch(true). - Posso continuar pesquisando após o primeiro bloco? Sim, chame
index.searchNext()com o token. - Preciso de uma licença? Uma avaliação gratuita ou licença temporária funciona para desenvolvimento; uma licença completa é necessária para produção.
O que você aprenderá
- Como criar um índice de pesquisa em uma pasta especificada.
- Etapas para adicionar documentos ao índice a partir de múltiplas localidades.
- Configurar opções de pesquisa para habilitar a pesquisa baseada em blocos.
- Executar pesquisas iniciais e subsequentes baseadas em blocos.
- Cenários do mundo real onde a pesquisa de documentos baseada em blocos se destaca.
Pré-requisitos
Para seguir este guia, certifique‑se de que você tem:
- Bibliotecas necessárias: GroupDocs.Search para Java 25.4 ou superior.
- Configuração do ambiente: Um Java Development Kit (JDK) compatível instalado.
- Pré-requisitos de conhecimento: Programação básica em Java e familiaridade com Maven.
Configurando o GroupDocs.Search para Java
Para começar, integre o GroupDocs.Search ao seu projeto usando Maven:
<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 em GroupDocs.Search for Java releases.
Aquisição de licença
Para experimentar o GroupDocs.Search:
- Teste gratuito – teste os recursos principais sem compromisso.
- Licença temporária – acesso estendido para desenvolvimento.
- Compra – licença completa para uso em produção.
Como adicionar documentos ao índice?
Resposta direta: Chame index.add() para cada pasta que contém arquivos que você deseja tornar pesquisáveis; o método escaneia a pasta recursivamente e adiciona todos os documentos suportados ao índice em uma única operação. Isso elimina a necessidade de manipulação manual arquivo por arquivo e acelera a ingestão em massa.
SearchIndex é a classe central que representa a coleção pesquisável no disco. Depois de instanciá‑la, todas as operações de indexação e consulta fluem através deste objeto.
1. Criando um índice
Resposta direta: Instancie um objeto SearchIndex com o caminho onde os arquivos do índice devem ser armazenados, então chame index.create() para inicializar a estrutura de armazenamento. A chamada cria as pastas necessárias e arquivos de metadados na primeira utilização.
import com.groupdocs.search.*;
public class CreateIndex {
public static void main(String[] args) {
String indexFolder = "YOUR_DOCUMENT_DIRECTORY\\output\\AdvancedUsage\\Searching\\SearchByChunks";
// Creating an index in the specified folder
Index index = new Index(indexFolder);
}
}
2. Adicionando documentos ao índice
Resposta direta: Use o método index.add() e passe o caminho absoluto de cada pasta de origem; a API detecta automaticamente os formatos suportados (PDF, DOCX, XLSX, etc.) e extrai o texto pesquisável para o índice.
SearchOptions é um objeto de configuração que permite ajustar finamente como os documentos são processados durante a indexação e a pesquisa. Você o usará mais tarde para habilitar consultas baseadas em blocos.
String indexFolder = "YOUR_DOCUMENT_DIRECTORY\\output\\AdvancedUsage\\Searching\\SearchByChunks";
Index index = new Index(indexFolder);
3. Configurando opções de pesquisa para busca por blocos
Resposta direta: Defina options.setChunkSearch(true) em uma instância de SearchOptions antes de executar uma consulta; isso indica ao mecanismo dividir cada documento em blocos lógicos (tipicamente parágrafos) e retornar correspondências por bloco em vez de por arquivo inteiro.
SearchResult contém os blocos correspondentes, suas posições e pontuações de relevância. Quando a busca por blocos está ativada, cada SearchResult corresponde a um único fragmento do documento original.
String documentsFolder1 = "YOUR_DOCUMENT_DIRECTORY";
String documentsFolder2 = "YOUR_DOCUMENT_DIRECTORY";
String documentsFolder3 = "YOUR_DOCUMENT_DIRECTORY";
index.add(documentsFolder1);
index.add(documentsFolder2);
index.add(documentsFolder3);
4. Executando busca inicial baseada em blocos
Resposta direta: Execute index.search("your query", options); a chamada retorna uma coleção de SearchResult para o primeiro conjunto de blocos correspondentes e um token que representa o estado da pesquisa para continuação.
O token retornado é essencial para paginar grandes conjuntos de resultados sem reexecutar a consulta completa.
SearchOptions options = new SearchOptions();
options.setChunkSearch(true);
5. Continuando a busca baseada em blocos
Resposta direta: Passe o token retornado da chamada anterior para index.searchNext(token, options); repita até que o método retorne null, indicando que todos os blocos correspondentes foram recuperados.
Essa abordagem incremental mantém o uso de memória baixo porque apenas o lote atual de blocos reside na memória.
String query = "invitation";
SearchResult result = index.search(query, options);
Por que usar busca baseada em blocos?
A busca baseada em blocos divide coleções massivas de documentos em peças manejáveis, reduzindo a pressão de memória e acelerando os tempos de resposta. Ao indexar ao nível de parágrafo ou seção, o mecanismo pode recuperar apenas os fragmentos relevantes, o que diminui o uso de CPU e melhora a latência para os usuários finais. É especialmente benéfico quando:
- Equipes jurídicas precisam localizar cláusulas específicas em milhares de contratos.
- Portais de suporte ao cliente precisam exibir artigos relevantes da base de conhecimento instantaneamente.
- Pesquisadores vasculham conjuntos de dados extensos sem carregar arquivos inteiros na memória.
Reivindicação quantificada: o GroupDocs.Search pode processar PDFs com mais de 500 páginas em menos de 2 segundos por bloco em um servidor padrão de 8 núcleos, mantendo o heap máximo abaixo de 200 MB.
Como essa abordagem aumenta o desempenho da pesquisa
Resposta direta: Ao pesquisar blocos menores em vez de arquivos inteiros, o mecanismo pode pular seções irrelevantes cedo, reduzir ciclos de CPU e manter apenas o bloco ativo na memória, o que reduz diretamente o consumo de memória do índice de pesquisa java e gera tempos de resposta mais rápidos. Essa abordagem direcionada também permite cache mais eficaz e processamento paralelo, permitindo que múltiplos núcleos tratem diferentes blocos simultaneamente, o que melhora ainda mais o throughput em servidores multi‑core.
Benefícios adicionais incluem:
- Processamento paralelo de blocos em múltiplos núcleos.
- Término antecipado quando uma correspondência de alta relevância é encontrada.
Gerenciando a memória do índice de pesquisa java
Resposta direta: Alocar heap JVM suficiente (por exemplo, -Xmx2g ou superior) com base no tamanho esperado do índice, executar index.optimize() após adições em massa para comprimir a estrutura do índice e monitorar pausas de GC com VisualVM para evitar picos de latência.
Dicas adicionais de ajuste:
- Use
index.flush()após grandes lotes para gravar dados intermediários no disco. - Habilite
options.setMemoryLimit(256)para limitar o uso de memória por pesquisa.
Considerações de desempenho
- Gerenciamento de memória – Alocar espaço de heap suficiente (
-Xmx) para índices grandes. - Monitoramento de recursos – Fique atento ao uso de CPU durante as operações de indexação e pesquisa.
- Manutenção do índice – Reconstrua ou limpe periodicamente o índice para descartar dados obsoletos.
Armadilhas comuns & solução de problemas
| Problema | Por que acontece | Correção |
|---|---|---|
OutOfMemoryError during indexing | Heap size too low | Increase JVM heap (-Xmx2g or higher) |
| No results returned | Chunk token not processed | Ensure the while loop runs until getNextChunkSearchToken() is null |
| Slow search performance | Index not optimized | Run index.optimize() after bulk additions |
Perguntas frequentes
Q: O que é a pesquisa baseada em blocos?
A: A pesquisa baseada em blocos divide o conjunto de dados em peças menores, permitindo consultas eficientes sobre grandes volumes de dados sem carregar documentos inteiros na memória.
Q: Como atualizo meu índice com novos arquivos?
A: Basta chamar index.add() com o caminho para os novos documentos; o índice os incorporará automaticamente.
Q: O GroupDocs.Search pode lidar com diferentes formatos de arquivo?
A: Sim, ele suporta PDF, DOCX, XLSX, PPTX, HTML, TXT e mais de 30 outros formatos.
Q: Quais são os gargalos de desempenho típicos?
A: Restrições de memória e índices não otimizados são os mais comuns; aloque heap suficiente e otimize o índice regularmente.
Q: Onde posso encontrar documentação mais detalhada?
A: Visite a documentação oficial do GroupDocs.Search Documentation para guias aprofundados e referências de API.
Q: A busca baseada em blocos funciona com PDFs criptografados?
A: Sim, desde que você forneça a senha através da sobrecarga de API apropriada.
Q: Como posso monitorar o progresso da indexação?
A: Use a sobrecarga de Index.add() que retorna um objeto Progress ou conecte‑se a callbacks de registro.
Recursos
- Documentação: GroupDocs.Search for Java Docs
- Referência da API: GroupDocs.Search API Reference
- Download: GroupDocs.Search Releases
- GitHub: GroupDocs.Search GitHub Repository
- Suporte gratuito: GroupDocs Forum
- Licença temporária: Obtain a Temporary License
Última atualização: 2026-10-02
Testado com: GroupDocs.Search 25.4 for Java
Autor: GroupDocs
while (result.getNextChunkSearchToken() != null) {
result = index.searchNext(result.getNextChunkSearchToken());
}