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:

  1. Equipes jurídicas precisam localizar cláusulas específicas em milhares de contratos.
  2. Portais de suporte ao cliente precisam exibir artigos relevantes da base de conhecimento instantaneamente.
  3. 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

ProblemaPor que aconteceCorreção
OutOfMemoryError during indexingHeap size too lowIncrease JVM heap (-Xmx2g or higher)
No results returnedChunk token not processedEnsure the while loop runs until getNextChunkSearchToken() is null
Slow search performanceIndex not optimizedRun 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


Ú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());
}

Tutoriais Relacionados