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
addFileseaddDirectoriespara 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
| Issue | Reason | Fix |
|---|---|---|
| Nenhum documento aparece nos resultados da pesquisa | Índice não foi confirmado | Chame node.getIndexer().commit() após adicionar arquivos. |
| Erro de conflito de porta | Outro serviço usa basePort | Escolha um basePort diferente ou verifique portas livres. |
| Formato de arquivo não suportado | A biblioteca não possui analisador | Certifique-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