Búsqueda por atributo java con la guía de GroupDocs.Search

En aplicaciones modernas centradas en documentos, a menudo necesitas localizar archivos no solo por su contenido de texto sino también por metadatos personalizados como departamento, nivel de confidencialidad o fecha de creación. Search by attribute java te brinda esa capacidad en una única consulta de alto rendimiento. En este tutorial verás cómo actualizar en lote los atributos de archivos ya indexados, inyectar atributos durante la indexación y consultar eficientemente documentos por metadatos usando la biblioteca GroupDocs.Search for Java.

Respuestas rápidas

  • ¿Qué es “search by attribute java”? Permite filtrar los resultados de búsqueda con metadatos clave‑valor adjuntos a cada documento indexado.
  • ¿Puedo modificar los atributos después de la indexación? Sí – use AttributeChangeBatch para aplicar cambios masivos sin reconstruir todo el índice.
  • ¿Cómo añado atributos durante la indexación? Registre un controlador para el evento FileIndexing y establezca atributos programáticamente para cada archivo.
  • ¿Necesito una licencia? Una prueba gratuita funciona para evaluación; se requiere una licencia permanente para implementaciones en producción.
  • ¿Qué versión de Java se requiere? Se recomienda Java 8 o posterior.

Qué es “search by attribute java”?

Search by attribute java le permite consultar documentos basados en metadatos personalizados (atributos) en lugar de solo su contenido textual. Este enfoque reduce drásticamente los conjuntos de resultados, disminuye el tráfico de red y acelera los tiempos de respuesta porque el motor evalúa los filtros de atributos antes de realizar el escaneo de texto completo.

¿Por qué usar etiquetado dinámico de metadatos?

El etiquetado dinámico de metadatos le permite asignar, actualizar y gestionar atributos personalizados para documentos sin volver a indexar, proporcionando una clasificación flexible que se adapta a reglas de negocio en evolución, mejora la eficiencia de búsqueda y reduce la necesidad de costosas migraciones de datos en grandes repositorios, manteniendo el cumplimiento y la auditabilidad.

  • Dynamic categorization – mantenga los metadatos sincronizados con las reglas de negocio en evolución.
  • Faster filtering – los filtros de atributos se evalúan antes de la búsqueda de texto completo, lo que aumenta los tiempos de respuesta.
  • Compliance tracking – etiquete documentos para políticas de retención o requisitos de auditoría.
  • Batch update attributes – cambie muchos documentos en una sola operación sin volver a indexar todo.

Requisitos previos

  • Java 8+ (JDK 8 o más reciente)
  • GroupDocs.Search for Java library (ver configuración Maven a continuación)
  • Familiaridad básica con colecciones de Java y manejo de excepciones

Configuración de GroupDocs.Search para Java

Configuración Maven

Agregue el repositorio de GroupDocs y la dependencia a su 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>

Descarga directa

Alternativamente, descargue la última versión desde GroupDocs.Search for Java releases. Si prefiere no usar Maven, obtenga el JAR desde el sitio web de GroupDocs.

Obtención de licencia

  • Comience con una prueba gratuita para explorar las capacidades.
  • Para uso prolongado, obtenga una licencia temporal o completa a través de la página de licencias.

Inicialización 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");

Cómo modificar atributos de documentos (actualización por lotes)

Para modificar los atributos de los documentos después de haber sido indexados, puede usar la API AttributeChangeBatch para aplicar actualizaciones masivas. Este enfoque actualiza los metadatos de los archivos seleccionados en una única transacción, evitando la sobrecarga de volver a indexar toda la colección y manteniendo intacto el índice de texto completo.

Respuesta directa: Use AttributeChangeBatch para agrupar adiciones, eliminaciones o reemplazos de metadatos en una única operación atómica, luego confirme el lote en el índice. Esto actualiza los atributos de muchos documentos en una sola pasada mientras preserva el índice de texto completo existente.

Paso 1: agregar documentos al índice

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

Paso 2: recuperar información del documento indexado

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

Paso 3: actualización por lotes de atributos de documentos

La clase AttributeChangeBatch agrupa múltiples modificaciones de atributos en una única operación atómica, reduciendo la sobrecarga de I/O y garantizando la consistencia del í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);

Paso 4: buscar con 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.");

Cómo agregar atributos durante la indexación

Agregar atributos durante el proceso de indexación garantiza que cada documento se enriquezca con los metadatos necesarios desde el principio. Al manejar el evento FileIndexing, puede adjuntar programáticamente pares clave‑valor a cada objeto DocumentInfo antes de que el motor procese el archivo, garantizando la disponibilidad constante de atributos para búsquedas posteriores.

Respuesta directa: Suscríbase al evento FileIndexing antes de agregar archivos; en el controlador del evento, llame a addAttribute en el objeto DocumentInfo para adjuntar pares clave‑valor, y luego permita que el índice continúe procesando el archivo.

Paso 1: suscribirse al evento FileIndexing

El evento FileIndexing se dispara para cada archivo a medida que se agrega al índice, permitiéndole inyectar metadatos 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);
});

Paso 2: indexar documentos

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

Aplicaciones prácticas

  1. Document management systems – etiquete automáticamente los archivos al ingestarlos, habilitando una navegación de facetas instantánea.
  2. Large content archives – combine filtros de atributos con búsqueda de texto completo para reducir el tiempo de consulta de minutos a segundos en colecciones de varios gigabytes.
  3. Compliance & reporting – asigne dinámicamente períodos de retención, niveles de confidencialidad o indicadores de auditoría que pueden consultarse para verificaciones regulatorias.

Consideraciones de rendimiento

  • Memory management – monitoree el heap de la JVM y ajuste -Xmx (p.ej., -Xmx4g para índices mayores de 2 GB).
  • Batch processing – agrupe cambios de atributos con AttributeChangeBatch para minimizar escrituras en disco; divida lotes de más de 10 000 modificaciones para evitar tiempos de espera de transacciones.
  • Library updates – manténgase en la última versión de GroupDocs.Search; la versión 25.4 añade un aumento del 30 % en velocidad para la evaluación de filtros de atributos comparado con 24.x.

Problemas comunes y soluciones

ProblemaPor qué ocurreCómo solucionarlo
Attributes not appliedManejador de eventos no registrado antes de la indexaciónAsegúrese de que index.getEvents().FileIndexing.add(...) se ejecute antes de cualquier llamada a index.add(...).
Search returns no resultsIncompatibilidad de nombre de atributo (sensible a mayúsculas/minúsculas)Use nombres exactos de atributos al crear filtros (createAttribute("main")).
Out‑of‑memory errors on large batchesDemasiados cambios en un solo loteDivida actualizaciones grandes en instancias más pequeñas de AttributeChangeBatch (p.ej., 5 000 documentos por lote).
License not recognizedUso del JAR de prueba sin aplicar el archivo de licenciaLlame a License license = new License(); license.setLicense("path/to/license.file"); antes de cualquier operación de índice.

Preguntas frecuentes

Q: ¿Cuáles son los requisitos previos para usar GroupDocs.Search en Java?
A: Java 8+, la biblioteca GroupDocs.Search y conocimientos básicos de conceptos de indexación.

Q: ¿Cómo instalo GroupDocs.Search vía Maven?
A: Agregue el repositorio y la dependencia mostrados en la sección de configuración Maven a su pom.xml.

Q: ¿Puedo modificar los atributos después de que los documentos estén indexados?
A: Sí, use AttributeChangeBatch para actualizar en lote los atributos de los documentos sin volver a indexar.

Q: ¿Qué pasa si mi proceso de indexación es lento?
A: Optimice la memoria de la JVM (-Xmx), use actualizaciones por lotes y actualice a la última versión de la biblioteca para obtener mejoras de rendimiento.

Q: ¿Dónde puedo encontrar más recursos sobre GroupDocs.Search para Java?
A: Visite la documentación oficial o explore los foros de la comunidad.

Recursos


Última actualización: 2026-09-21
Probado con: 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");

Tutoriales relacionados