Recherche par attribut java avec le guide GroupDocs.Search

Dans les applications modernes centrées sur les documents, vous devez souvent localiser des fichiers non seulement par leur contenu texte mais aussi par des métadonnées personnalisées telles que le service, le niveau de confidentialité ou la date de création. Search by attribute java vous offre cette capacité dans une requête unique et haute performance. Dans ce tutoriel, vous verrez comment mettre à jour en lot les attributs des fichiers déjà indexés, injecter des attributs lors de l’indexation et interroger efficacement les documents par métadonnées en utilisant la bibliothèque GroupDocs.Search for Java.

Réponses rapides

  • Qu’est‑ce que “search by attribute java” ? Cela vous permet de filtrer les résultats de recherche avec des métadonnées clé‑valeur attachées à chaque document indexé.
  • Puis‑je modifier les attributs après l’indexation ? Oui – utilisez AttributeChangeBatch pour appliquer des modifications en masse sans reconstruire l’ensemble de l’index.
  • Comment ajouter des attributs lors de l’indexation ? Enregistrez un gestionnaire pour l’événement FileIndexing et définissez les attributs de façon programmatique pour chaque fichier.
  • Ai‑je besoin d’une licence ? Un essai gratuit suffit pour l’évaluation ; une licence permanente est requise pour les déploiements en production.
  • Quelle version de Java est requise ? Java 8 ou ultérieure est recommandée.

Qu’est‑ce que “search by attribute java” ?

Search by attribute java vous permet d’interroger les documents en fonction de métadonnées personnalisées (attributs) plutôt que seulement de leur contenu textuel. Cette approche réduit considérablement les ensembles de résultats, diminue le trafic réseau et accélère les temps de réponse car le moteur évalue les filtres d’attributs avant d’effectuer le balayage en texte intégral.

Pourquoi utiliser le balisage dynamique des métadonnées ?

Le balisage dynamique des métadonnées vous permet d’attribuer, de mettre à jour et de gérer des attributs personnalisés pour les documents sans ré‑indexation, offrant une classification flexible qui s’adapte aux règles métier évolutives, améliore l’efficacité de la recherche et réduit le besoin de migrations de données coûteuses à travers de grands dépôts tout en maintenant la conformité et l’auditabilité.

  • Catégorisation dynamique – garder les métadonnées synchronisées avec les règles métier évolutives.
  • Filtrage plus rapide – les filtres d’attributs sont évalués avant la recherche en texte intégral, améliorant les temps de réponse.
  • Suivi de conformité – baliser les documents pour les politiques de conservation ou les exigences d’audit.
  • Mise à jour par lot des attributs – modifier de nombreux documents en une seule opération sans ré‑indexer tout.

Prérequis

  • Java 8+ (JDK 8 ou plus récent)
  • Bibliothèque GroupDocs.Search for Java (voir la configuration Maven ci‑dessous)
  • Familiarité de base avec les collections Java et la gestion des exceptions

Configuration de GroupDocs.Search pour Java

Configuration Maven

Ajoutez le dépôt GroupDocs et la dépendance à votre 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>

Téléchargement direct

Sinon, téléchargez la dernière version depuis GroupDocs.Search for Java releases. Si vous préférez ne pas utiliser Maven, récupérez le JAR depuis le site GroupDocs.

Acquisition de licence

  • Commencez avec un essai gratuit pour explorer les fonctionnalités.
  • Pour une utilisation prolongée, obtenez une licence temporaire ou complète via la page de licence.

Initialisation de base

// 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");

Comment modifier les attributs des documents (mise à jour par lot)

Pour modifier les attributs des documents après leur indexation, vous pouvez utiliser l’API AttributeChangeBatch pour appliquer des mises à jour en masse. Cette approche met à jour les métadonnées des fichiers sélectionnés dans une transaction unique, évitant le surcoût de ré‑indexation de l’ensemble de la collection et conservant l’index texte intégral intact.

Réponse directe : Utilisez AttributeChangeBatch pour regrouper les ajouts, suppressions ou remplacements de métadonnées en une opération atomique unique, puis validez le lot dans l’index. Cela met à jour les attributs de nombreux documents en une passe tout en préservant l’index texte intégral existant.

Étape 1 : ajouter des documents à l’index

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

Étape 2 : récupérer les informations du document indexé

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

Étape 3 : mise à jour par lot des attributs du document

La classe AttributeChangeBatch regroupe plusieurs modifications d’attributs en une opération atomique unique, réduisant la surcharge d’E/S et assurant la cohérence de l’index.

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);

Étape 4 : rechercher avec des filtres d’attributs

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

Comment ajouter des attributs lors de l’indexation

Ajouter des attributs pendant le processus d’indexation garantit que chaque document est enrichi des métadonnées nécessaires dès le départ. En gérant l’événement FileIndexing, vous pouvez attacher programmétiquement des paires clé‑valeur à chaque objet DocumentInfo avant que le moteur ne traite le fichier, assurant une disponibilité cohérente des attributs pour les recherches ultérieures.

Réponse directe : Abonnez‑vous à l’événement FileIndexing avant d’ajouter des fichiers ; dans le gestionnaire d’événement, appelez addAttribute sur l’objet DocumentInfo pour attacher les paires clé‑valeur, puis laissez l’index poursuivre le traitement du fichier.

Étape 1 : s’abonner à l’événement FileIndexing

L’événement FileIndexing est déclenché pour chaque fichier lorsqu’il est ajouté à l’index, vous permettant d’injecter des métadonnées personnalisées.

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

Étape 2 : indexer les documents

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

Applications pratiques

  1. Systèmes de gestion de documents – baliser automatiquement les fichiers lors de l’ingestion, permettant une navigation instantanée par facettes.
  2. Grandes archives de contenu – combiner les filtres d’attributs avec la recherche en texte intégral pour réduire le temps de requête de minutes à secondes sur des collections de plusieurs gigaoctets.
  3. Conformité et rapports – assigner dynamiquement des périodes de conservation, des niveaux de confidentialité ou des indicateurs d’audit qui peuvent être interrogés pour les contrôles réglementaires.

Considérations de performance

  • Gestion de la mémoire – surveillez le tas JVM et ajustez -Xmx (par ex., -Xmx4g pour des index supérieurs à 2 Go).
  • Traitement par lot – regroupez les changements d’attributs avec AttributeChangeBatch pour minimiser les écritures disque ; divisez les lots de plus de 10 000 modifications afin d’éviter les expirations de transaction.
  • Mises à jour de la bibliothèque – restez sur la dernière version de GroupDocs.Search ; la version 25.4 ajoute une amélioration de vitesse de 30 % pour l’évaluation des filtres d’attributs comparée à la 24.x.

Problèmes courants et solutions

ProblèmePourquoi cela se produitComment résoudre
Attributs non appliquésGestionnaire d’événement non enregistré avant l’indexationAssurez‑vous que index.getEvents().FileIndexing.add(...) s’exécute avant tout appel index.add(...).
La recherche ne renvoie aucun résultatMauvaise correspondance du nom d’attribut (sensible à la casse)Utilisez les noms d’attributs exacts lors de la création des filtres (createAttribute("main")).
Erreurs de mémoire insuffisante sur de gros lotsTrop de modifications dans un seul lotDivisez les grosses mises à jour en instances plus petites de AttributeChangeBatch (par ex., 5 000 documents par lot).
Licence non reconnueUtilisation du JAR d’essai sans appliquer le fichier de licenceAppelez License license = new License(); license.setLicense("path/to/license.file"); avant toute opération d’indexation.

Questions fréquemment posées

Q: Quels sont les prérequis pour utiliser GroupDocs.Search en Java ?
A: Java 8+, la bibliothèque GroupDocs.Search, et des connaissances de base sur les concepts d’indexation.

Q: Comment installer GroupDocs.Search via Maven ?
A: Ajoutez le dépôt et la dépendance présentés dans la section de configuration Maven à votre pom.xml.

Q: Puis‑je modifier les attributs après l’indexation des documents ?
A: Oui, utilisez AttributeChangeBatch pour mettre à jour les attributs des documents par lot sans ré‑indexation.

Q: Que faire si mon processus d’indexation est lent ?
A: Optimisez la mémoire JVM (-Xmx), utilisez les mises à jour par lot, et passez à la dernière version de la bibliothèque pour les correctifs de performance.

Q: Où puis‑je trouver plus de ressources sur GroupDocs.Search pour Java ?
A: Consultez la documentation officielle ou explorez les forums communautaires.

Ressources


Dernière mise à jour : 2026-09-21
Testé avec : GroupDocs.Search 25.4 pour Java
Auteur : 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");

Tutoriels associés