Comment indexer Java – Recherche de documents rapide avec GroupDocs
Si vous vous demandez comment indexer java les fichiers efficacement, vous êtes au bon endroit. Dans le monde actuel axé sur les données, localiser rapidement le bon document peut faire gagner des heures de travail manuel. GroupDocs.Search for Java vous offre une méthode simple pour transformer un dossier de fichiers en un index searchable, vous permettant d’ajouter des documents à l’index, de supprimer des documents de l’index et de charger des documents depuis le système de fichiers avec seulement quelques lignes de code. Ce tutoriel vous guide à travers l’installation, l’indexation, la recherche et le nettoyage afin que vous puissiez intégrer une recherche de documents rapide dans n’importe quelle application Java.
Réponses rapides
- Quel est le but principal ? Indexer et rechercher efficacement des documents Java.
- Quelle bibliothèque est requise ? GroupDocs.Search for Java (v25.4+).
- Ai-je besoin d’une licence ? Un essai gratuit ou une licence temporaire est disponible ; une licence permanente est requise pour la production.
- Puis-je supprimer des documents de l’index ? Oui, en utilisant la méthode
deleteavec les clés de document. - Apache Commons IO est-il obligatoire ? Il est recommandé pour les utilitaires de gestion de fichiers.
Qu’est‑ce que « comment indexer java » ?
L’indexation des documents Java consiste à créer une structure de données searchable (un index) qui associe le contenu du document à des termes recherchables, permettant une récupération rapide des fichiers pertinents à partir de requêtes par mots‑clés. En construisant cet index une fois, les recherches ultérieures s’exécutent en millisecondes même sur des milliers de fichiers, améliorant considérablement la productivité des développeurs et l’expérience des utilisateurs finaux.
Pourquoi utiliser GroupDocs.Search for Java ?
GroupDocs.Search prend en charge plus de 50 formats d’entrée et de sortie — y compris PDF, DOCX, XLSX, PPTX, HTML et les types d’image courants — et peut traiter des documents de plusieurs centaines de pages sans charger le fichier complet en mémoire. Ses algorithmes optimisés offrent des réponses aux requêtes en moins de 100 ms pour des ensembles de données allant jusqu’à 1 million de documents, ce qui en fait un choix évolutif pour des solutions de recherche de niveau entreprise.
Prérequis
Avant de commencer, assurez‑vous d’avoir :
- GroupDocs.Search for Java (version 25.4 ou plus récente).
- Apache Commons IO pour des utilitaires de fichiers pratiques.
- JDK 8 ou supérieur et un IDE tel qu’IntelliJ IDEA ou Eclipse.
- Connaissances de base en Java et, éventuellement, familiarité avec Maven.
Configuration de GroupDocs.Search for Java
Configuration Maven
Ajoutez le dépôt et la dépendance à votre 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>
Astuce : Gardez le numéro de version synchronisé avec la dernière version pour bénéficier des améliorations de performance.
Téléchargement direct (si vous préférez ne pas utiliser Maven)
Vous pouvez également télécharger le JAR le plus récent depuis le site officiel : GroupDocs.Search for Java releases.
Acquisition de licence
- Essai gratuit : Tester la bibliothèque sans clé de licence.
- Licence temporaire : En demander une pour une évaluation prolongée.
- Licence complète : Requise pour les déploiements en production.
Initialisation de base
Créez une classe Java simple pour vérifier que la bibliothèque se charge correctement :
import com.groupdocs.search.*;
public class DocumentIndexing {
public static void main(String[] args) {
Index index = new Index("YOUR_DOCUMENT_DIRECTORY\\output\\AdvancedUsage\\Indexing\\DeleteIndexedDocuments");
System.out.println("GroupDocs.Search initialized successfully.");
}
}
L’exécution de ce programme doit afficher le message de confirmation, indiquant que le dossier d’index est prêt.
Comment ajouter des documents à l’index
La classe Document représente une entité searchable qui contient le contenu binaire du fichier et ses métadonnées.
Pour ajouter un document, créez une instance Document qui encapsule les octets du fichier et attribue une clé unique, puis appelez index.add(document). La bibliothèque extrait le texte, le tokenise et stocke les postings dans le dossier d’index automatiquement. Cette opération s’exécute en temps linéaire par rapport à la taille du fichier et prend en charge le chargement paresseux pour les gros fichiers.
Réponse directe :
Index index = new Index("YOUR_DOCUMENT_DIRECTORY\\output\\AdvancedUsage\\Indexing\\DeleteIndexedDocuments", true);
- Le premier argument est le dossier où les fichiers d’index seront stockés.
- Le deuxième argument (
true) indique à GroupDocs de créer le dossier s’il n’existe pas et de mettre à jour un index existant automatiquement.
String filePath = "YOUR_DOCUMENT_DIRECTORY\\English.docx";
DocumentLoader documentLoader = new DocumentLoader(filePath);
Document document = Document.createLazy(DocumentSourceKind.Stream, documentLoader.getDocumentKey(), documentLoader);
Document[] documents = new Document[]{document};
index.add(documents, new IndexingOptions());
DocumentLoader(défini plus tard) lit le fichier et fournit une clé unique.createLazygarantit que les gros fichiers sont traités efficacement, en chargeant le contenu uniquement lorsque nécessaire.
Comment charger des documents depuis le système de fichiers
La classe utilitaire DocumentLoader lit un fichier depuis le disque et crée un objet Document correspondant avec un identifiant stable.
Pour charger des fichiers, le chargeur lit les octets du fichier, génère une clé unique (par exemple, un hachage du chemin) et construit une instance Document. Cet objet peut ensuite être passé à index.add(document). Utiliser un chargeur dédié isole les préoccupations du système de fichiers, rendant le code d’indexation réutilisable et plus facile à tester avec différents back‑ends de stockage.
Réponse directe :
class DocumentLoader {
private final String filePath;
private final String documentKey;
public DocumentLoader(String filePath) {
this.filePath = filePath;
documentKey = FilenameUtils.getName(filePath);
}
public String getDocumentKey() { return documentKey; }
public Document loadDocument() throws IOException {
Path path = Paths.get(filePath);
byte[] buffer = Files.readAllBytes(path);
ByteArrayInputStream stream = new ByteArrayInputStream(buffer);
return Document.createFromStream(documentKey, new Date(System.currentTimeMillis()), "." + FilenameUtils.getExtension(filePath), stream);
}
}
Comment effectuer une recherche par mot‑clé dans un index
La classe SearchQuery encapsule la chaîne de requête de l’utilisateur, tandis que SearchResult contient les identifiants de documents correspondants, les extraits et les scores de pertinence.
Créez une SearchQuery avec les mots‑clés souhaités et configurez éventuellement la recherche floue ou des filtres, puis invoquez index.search(query). La méthode renvoie un objet SearchResult contenant chaque identifiant de document correspondant, des extraits mis en évidence et un score de pertinence. Vous pouvez parcourir ces résultats pour afficher les extraits ou traiter davantage les correspondances.
Réponse directe :
String query = "moment";
SearchResult searchResult1 = index.search(query);
- Passez n’importe quelle chaîne de texte à
searchet recevez unSearchResultcontenant les identifiants de documents correspondants, les extraits et les scores de pertinence.
Comment supprimer des documents de l’index
La classe UpdateOptions vous permet de contrôler la façon dont les modifications telles que les suppressions sont appliquées à l’index.
Fournissez les clés uniques des documents à index.delete(keys), et la bibliothèque supprime tous les postings associés à ces clés. Vous pouvez passer une instance UpdateOptions pour spécifier si les suppressions sont appliquées immédiatement ou regroupées pour de meilleures performances. Après la suppression, l’index reste cohérent sans nécessiter une reconstruction complète.
Réponse directe :
String[] documentKeys = new String[]{documentLoader.getDocumentKey()};
DeleteResult deleteResult = index.delete(new UpdateOptions(), documentKeys);
- Fournissez les clés des documents que vous souhaitez retirer.
UpdateOptionsvous permet de contrôler la manière dont la suppression est appliquée (par ex., immédiate vs. groupée).
Comment récupérer les documents indexés après des suppressions
La méthode getDocumentList() renvoie une collection de tous les identifiants de documents actuellement stockés dans l’index.
Appeler index.getDocumentList() fournit l’ensemble actuel des clés de documents, reflétant toutes les ajouts et suppressions effectués jusqu’à présent. Cette liste peut être utilisée pour vérifier que les entrées indésirables ont bien été supprimées ou pour parcourir les documents restants afin de les traiter davantage. C’est une opération légère qui ne modifie pas l’index.
Réponse directe :
DocumentInfo[] indexedDocuments2 = index.getIndexedDocuments();
- Cette appel renvoie la liste actuelle des documents encore présents dans l’index, vous aidant à vérifier que les suppressions ont réussi.
Conseils de performance pour la recherche Java
Optimiser java search performance implique trois actions clés : (1) exécuter index.optimize() après des insertions ou suppressions massives pour compacter les fichiers de postings, (2) activer le chargement paresseux pour les fichiers supérieurs à 10 MB afin d’éviter les erreurs OutOfMemory, et (3) allouer suffisamment de mémoire heap JVM (par ex., -Xmx2g pour des charges de travail de taille moyenne). En suivant ces pratiques, la latence des requêtes reste inférieure à 100 ms même lorsque l’index grandit.
Applications pratiques
- Portails d’entreprise – les employés trouvent les politiques, contrats ou manuels en quelques secondes.
- Gestion de dossiers juridiques – les avocats trouvent rapidement des clauses de référence parmi des milliers de PDF et de fichiers Word.
- Bibliothèques numériques – les universités offrent une recherche en texte intégral sur les articles de recherche et les thèses.
Problèmes courants et solutions
| Problème | Cause | Solution |
|---|---|---|
| Aucun résultat retourné | Termes de requête non indexés ou mots‑vides filtrés | Vérifier IndexingOptions et ajuster la liste des mots‑vides |
| Erreurs de mémoire insuffisante | Fichiers volumineux chargés de manière anticipée | Passer à Document.createLazy ou augmenter le tas JVM |
| Les documents supprimés apparaissent toujours | L’index n’est pas rafraîchi après la suppression | Appeler index.optimize() ou rouvrir l’instance d’index |
Questions fréquemment posées
Q : Puis‑je indexer les PDF, DOCX et PPTX ensemble ?
R : Oui, GroupDocs.Search prend en charge un large éventail de formats dès le départ, gérant plus de 50 types de fichiers sans convertisseurs supplémentaires.
Q : Comment la fonction « supprimer des documents de l’index » fonctionne‑t‑elle en interne ?
R : La méthode delete supprime les postings pour les clés de document spécifiées et met à jour les structures internes, de sorte que l’index reste cohérent sans reconstruction complète.
Q : Existe‑t‑il un moyen de surveiller la taille de l’index ?
R : Utilisez index.getStatistics() pour obtenir le nombre de documents, la taille totale et d’autres métriques utiles.
Q : Dois‑je reconstruire l’intégralité de l’index après chaque suppression ?
R : Non. Les suppressions sont incrémentielles ; seules les entrées concernées sont retirées, et vous pouvez appeler index.optimize() périodiquement pour maintenir des performances optimales.
Q : Que faire si je dois ré‑indexer tous les fichiers après un changement de schéma ?
R : Créez une nouvelle instance Index pointant vers un dossier différent, ajoutez à nouveau tous les documents, puis basculez votre application pour utiliser le nouveau chemin d’index.
Conclusion
Vous disposez maintenant d’une feuille de route complète pour comment indexer java les documents à l’aide de GroupDocs.Search for Java — de la configuration de l’environnement, à l’ajout de documents à l’index, leur chargement depuis le système de fichiers, la réalisation de recherches, jusqu’à la suppression et la vérification du contenu de l’index. En intégrant ces étapes dans votre application, vous améliorerez considérablement la découvrabilité des documents, réduirez la latence des recherches et augmenterez la productivité globale.
Prochaines étapes :
- Expérimenter des requêtes complexes (joker, correspondance floue).
- Explorer des fonctionnalités avancées comme la recherche à facettes, les analyseurs personnalisés et l’indexation des métadonnées.
Bonne indexation !
Dernière mise à jour : 2026-08-05
Testé avec : GroupDocs.Search Java 25.4
Auteur : GroupDocs