Pesquisa por atributo java com o guia GroupDocs.Search

Em aplicações modernas centradas em documentos, você frequentemente precisa localizar arquivos não apenas pelo conteúdo de texto, mas também por metadados personalizados, como departamento, nível de confidencialidade ou data de criação. Search by attribute java oferece essa capacidade em uma única consulta de alto desempenho. Neste tutorial, você verá como atualizar em lote atributos em arquivos já indexados, injetar atributos durante a indexação e consultar documentos de forma eficiente por metadados usando a biblioteca GroupDocs.Search for Java.

Respostas rápidas

  • O que é “search by attribute java”? Ele permite filtrar os resultados de pesquisa com metadados de chave‑valor anexados a cada documento indexado.
  • Posso modificar atributos após a indexação? Sim – use AttributeChangeBatch para aplicar alterações em massa sem reconstruir todo o índice.
  • Como adiciono atributos durante a indexação? Registre um manipulador para o evento FileIndexing e defina atributos programaticamente para cada arquivo.
  • Preciso de uma licença? Um teste gratuito funciona para avaliação; uma licença permanente é necessária para implantações em produção.
  • Qual versão do Java é necessária? Java 8 ou superior é recomendado.

O que é “search by attribute java”?

Search by attribute java permite consultar documentos com base em metadados personalizados (atributos) em vez de apenas seu conteúdo textual. Essa abordagem reduz drasticamente os conjuntos de resultados, diminui o tráfego de rede e acelera os tempos de resposta porque o mecanismo avalia os filtros de atributos antes de realizar a varredura de texto completo.

Por que usar marcação dinâmica de metadados?

A marcação dinâmica de metadados permite atribuir, atualizar e gerenciar atributos personalizados para documentos sem reindexação, proporcionando classificação flexível que se adapta a regras de negócios em evolução, melhora a eficiência da pesquisa e reduz a necessidade de migrações de dados caras em grandes repositórios, mantendo a conformidade e auditabilidade.

  • Categorização dinâmica – mantenha os metadados sincronizados com as regras de negócios em evolução.
  • Filtragem mais rápida – os filtros de atributos são avaliados antes da pesquisa de texto completo, aumentando os tempos de resposta.
  • Rastreamento de conformidade – marque documentos para políticas de retenção ou requisitos de auditoria.
  • Atualização em lote de atributos – altere muitos documentos em uma única operação sem reindexar tudo.

Pré-requisitos

  • Java 8+ (JDK 8 ou mais recente)
  • GroupDocs.Search for Java library (veja a configuração Maven abaixo)
  • Familiaridade básica com coleções Java e tratamento de exceções

Configurando o GroupDocs.Search para Java

Configuração Maven

Adicione o repositório GroupDocs e a dependência ao seu pom.xml:

<repositories>
    <repository>
        <id>groupdocs-releases</id>
        <url>https://repo.groupdocs.com/maven</url>
    </repository>
</repositories>

<dependencies>
    <dependency>
        <groupId>com.groupdocs</groupId>
        <artifactId>groupdocs-search</artifactId>
        <version>25.4</version>
    </dependency>
</dependencies>

Download direto

Alternativamente, faça o download da versão mais recente em GroupDocs.Search for Java releases. Se preferir não usar Maven, obtenha o JAR no site da GroupDocs.

Aquisição de licença

  • Comece com um teste gratuito para explorar os recursos.
  • Para uso prolongado, obtenha uma licença temporária ou completa via a página de licença.

Inicialização básica

// Initialize the search index folder
String indexFolder = "C:/search_index";
Index index = new Index(indexFolder);

// Apply license if you have one
License license = new License();
license.setLicense("C:/licenses/groupdocs.lic");

Como modificar atributos de documentos (atualização em lote)

Para modificar atributos de documentos após a indexação, você pode usar a API AttributeChangeBatch para aplicar atualizações em massa. Essa abordagem atualiza os metadados dos arquivos selecionados em uma única transação, evitando a sobrecarga de reindexar toda a coleção e mantendo o índice de texto completo intacto.

Resposta direta: Use AttributeChangeBatch para agrupar adições, exclusões ou substituições de metadados em uma única operação atômica, então confirme o lote no índice. Isso atualiza os atributos de muitos documentos em uma única passagem, preservando o índice de texto completo existente.

Etapa 1: adicionar documentos ao índice

index.add("C:/docs/contract1.pdf");
index.add("C:/docs/report2.docx");

Etapa 2: recuperar informações do documento indexado

DocumentInfo info = index.getDocumentInfo("contract1.pdf");
System.out.println("Current attributes: " + info.getAttributes());

Etapa 3: atualização em lote de atributos de documentos

A classe AttributeChangeBatch agrupa múltiplas modificações de atributos em uma única operação atômica, reduzindo a sobrecarga de I/O e garantindo a consistência do índice.

AttributeChangeBatch batch = new AttributeChangeBatch();
batch.addAttribute("contract1.pdf", "department", "Legal");
batch.removeAttribute("report2.docx", "confidential");
batch.replaceAttribute("report2.docx", "status", "archived", "active");
index.applyAttributeChanges(batch);

Etapa 4: pesquisar com filtros de atributos

SearchOptions options = new SearchOptions();
options.addAttributeFilter("department", "Legal");
SearchResult result = index.search("agreement", options);
System.out.println("Found " + result.getCount() + " legal documents.");

Como adicionar atributos durante a indexação

Adicionar atributos durante o processo de indexação garante que cada documento seja enriquecido com os metadados necessários desde o início. Ao manipular o evento FileIndexing, você pode anexar programaticamente pares chave‑valor a cada objeto DocumentInfo antes que o mecanismo processe o arquivo, garantindo disponibilidade consistente de atributos para pesquisas subsequentes.

Resposta direta: Inscreva-se no evento FileIndexing antes de adicionar arquivos; no manipulador de evento, chame addAttribute no objeto DocumentInfo para anexar pares chave‑valor, então deixe o índice continuar processando o arquivo.

Etapa 1: inscrever-se no evento FileIndexing

O evento FileIndexing é disparado para cada arquivo ao ser adicionado ao índice, permitindo injetar metadados personalizados.

index.getEvents().FileIndexing.add(event -> {
    // Example: set department based on folder name
    String folder = new File(event.getFilePath()).getParentFile().getName();
    event.getDocumentInfo().addAttribute("department", folder);
});

Etapa 2: indexar documentos

index.add("C:/incoming/hr/policy.pdf");
index.add("C:/incoming/finance/budget.xlsx");

Aplicações práticas

  1. Sistemas de gerenciamento de documentos – marque arquivos automaticamente na ingestão, permitindo navegação instantânea por facetas.
  2. Arquivos de conteúdo grandes – combine filtros de atributos com pesquisa de texto completo para reduzir o tempo de consulta de minutos para segundos em coleções de vários gigabytes.
  3. Conformidade e relatórios – atribua dinamicamente períodos de retenção, níveis de confidencialidade ou indicadores de auditoria que podem ser consultados para verificações regulatórias.

Considerações de desempenho

  • Gerenciamento de memória – monitore o heap da JVM e ajuste -Xmx (por exemplo, -Xmx4g para índices maiores que 2 GB).
  • Processamento em lote – agrupe alterações de atributos com AttributeChangeBatch para minimizar gravações em disco; divida lotes maiores que 10 000 modificações para evitar timeouts de transação.
  • Atualizações de biblioteca – mantenha-se na versão mais recente do GroupDocs.Search; a versão 25.4 adiciona um aumento de velocidade de 30 % na avaliação de filtros de atributos comparado com 24.x.

Problemas comuns e soluções

ProblemaPor que aconteceComo corrigir
Atributos não aplicadosManipulador de evento não registrado antes da indexaçãoGaranta que index.getEvents().FileIndexing.add(...) seja executado antes de quaisquer chamadas index.add(...).
Pesquisa não retorna resultadosIncompatibilidade no nome do atributo (sensível a maiúsculas/minúsculas)Use nomes de atributos exatos ao criar filtros (createAttribute("main")).
Erros de falta de memória em lotes grandesMuitas alterações em um único loteDivida grandes atualizações em instâncias menores de AttributeChangeBatch (por exemplo, 5 000 documentos por lote).
Licença não reconhecidaUsando JAR de teste sem aplicar o arquivo de licençaChame License license = new License(); license.setLicense("path/to/license.file"); antes de qualquer operação de índice.

Perguntas frequentes

Q: Quais são os pré-requisitos para usar o GroupDocs.Search em Java?
A: Java 8+, a biblioteca GroupDocs.Search e conhecimento básico de conceitos de indexação.

Q: Como instalo o GroupDocs.Search via Maven?
A: Adicione o repositório e a dependência mostrados na seção de configuração Maven ao seu pom.xml.

Q: Posso modificar atributos após os documentos serem indexados?
A: Sim, use AttributeChangeBatch para atualizar em lote os atributos dos documentos sem reindexar.

Q: E se meu processo de indexação estiver lento?
A: Otimize a memória da JVM (-Xmx), use atualizações em lote e atualize para a versão mais recente da biblioteca para correções de desempenho.

Q: Onde posso encontrar mais recursos sobre o GroupDocs.Search para Java?
A: Visite a documentação oficial ou explore os fóruns da comunidade.

Recursos


Última atualização: 2026-09-21
Testado com: GroupDocs.Search 25.4 for Java
Autor: GroupDocs

<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>
import com.groupdocs.search.Index;

// Initialize an index in a specified directory
Index index = new Index("YOUR_OUTPUT_DIRECTORY/ChangeAttributes");
index.add("YOUR_DOCUMENT_DIRECTORY");
import com.groupdocs.search.results.DocumentInfo;

DocumentInfo[] documents = index.getIndexedDocuments();
import com.groupdocs.search.common.AttributeChangeBatch;
import com.groupdocs.search.SearchOptions;

AttributeChangeBatch batch = new AttributeChangeBatch();
batch.addToAll("public"); // Add 'public' to all documents
batch.remove(documents[0].getFilePath(), "public"); // Remove 'public' from a specific document
batch.add(documents[0].getFilePath(), "main", "key"); // Add 'main' and 'key' attributes

// Apply changes
index.changeAttributes(batch);
import com.groupdocs.search.results.SearchResult;

SearchOptions options = new SearchOptions();
options.setSearchDocumentFilter(SearchDocumentFilter.createAttribute("main"));
String query = "length";
SearchResult result = index.search(query, options); // Perform the search
import com.groupdocs.search.events.EventHandler;
import com.groupdocs.search.events.FileIndexingEventArgs;

index.getEvents().FileIndexing.add(new EventHandler<FileIndexingEventArgs>() {
    @Override
    public void invoke(Object sender, FileIndexingEventArgs args) {
        if (args.getDocumentFullPath().endsWith("SampleDocument.pdf")) {
            args.setAttributes(new String[] { "main", "key" });
        }
    }
});
index.add("YOUR_DOCUMENT_DIRECTORY");

Tutoriais Relacionados