Maîtriser la recherche de documents efficace avec GroupDocs.Search pour Java
Trouver le bon passage parmi des milliers de PDF, fichiers Word ou feuilles de calcul peut ressembler à chercher une aiguille dans une botte de foin. How to create index rapidement et récupérer cette aiguille est ce qui rend une solution de recherche de documents précieuse. Dans ce tutoriel, vous apprendrez à utiliser GroupDocs.Search for Java, une bibliothèque de recherche Java haute performance, pour create index, add documents to index, et extract text from documents dans plusieurs formats tels que fichiers, flux, chaînes et données structurées. À la fin, vous disposerez d’un pipeline d’indexation prêt pour la production, capable de s’adapter à de grandes collections de documents tout en maintenant une faible consommation de mémoire.
Réponses rapides
- Quel est le but principal ? Pour how to create index et récupérer le contenu du document instantanément.
- Quelle bibliothèque devrais-je utiliser ? La GroupDocs.Search for Java java search library.
- Puis-je exporter du texte vers un fichier ? Oui – la bibliothèque fournit des adaptateurs output text to file pour HTML, texte brut, et plus.
- L’extraction structurée est‑elle prise en charge ? Absolument – utilisez l’adaptateur structured text extraction pour obtenir des données au niveau des champs.
- Ai‑je besoin d’une licence ? Une licence d’essai fonctionne pour le développement ; une licence permanente est requise pour les déploiements en production.
Ce que vous apprendrez
- Comment how to create index et add documents to index en utilisant GroupDocs.Search pour Java.
- Techniques pour output text to file, les flux, les chaînes et les formats structurés.
- Conseils d’optimisation des performances qui maintiennent l’indexation rapide et efficace en mémoire.
- Scénarios réels où ces fonctionnalités brillent, comme les dépôts de contrats juridiques et les archives d’articles académiques.
Pourquoi utiliser GroupDocs.Search pour Java ?
GroupDocs.Search prend en charge plus de 50 formats d’entrée et de sortie – y compris DOCX, XLSX, PPTX, PDF, HTML et les types d’images courants – et peut indexer des fichiers multi‑gigaoctets sans charger le fichier entier en mémoire. Les benchmarks montrent qu’une collection de documents de 1 Go peut être indexée en moins de 2 minutes sur un serveur standard à 8 cœurs, tandis que les requêtes de recherche renvoient des résultats en moins de 100 ms.
Prérequis
- Java Development Kit (JDK) 8 ou plus récent.
- Bibliothèque GroupDocs.Search for Java (essai ou sous licence).
- Maven pour la gestion des dépendances.
- Connaissances de base en I/O Java.
Configuration de GroupDocs.Search pour Java
Tout d’abord, ajoutez le dépôt Maven GroupDocs.Search et la dépendance à votre fichier pom.xml. Cette étape garantit que la bibliothèque est disponible sur le classpath.
Configuration Maven
Ajoutez les configurations de dépôt et de dépendance suivantes dans votre fichier 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>
Pour ceux qui préfèrent un téléchargement direct, vous pouvez obtenir la dernière version depuis GroupDocs.Search for Java releases.
Obtention de licence
Pour utiliser GroupDocs.Search en production, procurez‑vous une licence d’essai ou permanente depuis le site officiel. La licence d’essai est illimitée pour le développement et les tests.
Comment créer un index Java avec des paramètres personnalisés
Index est la classe principale qui représente une collection de documents interrogeable.IndexSettings configure des options telles que la compression de l’index.CompressionLevel définit le degré de compression appliqué au texte stocké.
Chargez l’objet Index avec la compression activée, pointez‑le vers un dossier, et ajoutez tous les fichiers pris en charge. Ce paragraphe de réponse directe vous indique exactement quoi faire : instanciez Index avec new Index("indexFolder", new IndexSettings().setCompressionLevel(CompressionLevel.High)), puis appelez index.add("documentsFolder", true) pour indexer récursivement chaque fichier pris en charge. Le mode de haute compression réduit la taille sur disque jusqu’à 70 % tout en maintenant une vitesse de recherche rapide.
Créer l’index est la base de toute application orientée recherche. L’exemple ci‑dessous vous guide à travers le processus, explique chaque paramètre, et montre comment vérifier que l’index a été construit avec succès.
Création d’index et indexation de documents
Vue d’ensemble
La classe Index est le composant central qui représente une collection de documents interrogeable. Elle stocke les index inversés, les dictionnaires de termes et les métadonnées nécessaires aux recherches rapides.
import com.groupdocs.search.*;
import java.io.ByteArrayOutputStream;
public class FeatureIndexCreation {
public static void main(String[] args) {
// Define the folder paths for indexing
String indexFolder = YOUR_DOCUMENT_DIRECTORY + "/OutputAdapters/Index";
String documentsFolder = YOUR_DOCUMENT_DIRECTORY + "/DocumentsPath"; // Adjust as needed
// Creating an index settings instance with compression enabled
IndexSettings settings = new IndexSettings();
settings.setTextStorageSettings(new TextStorageSettings(Compression.High));
// Creating the index in the specified folder
Index index = new Index(indexFolder, settings);
// Adding documents from the specified folder to the index
index.add(documentsFolder);
}
}
Explication
- Index Settings : Nous activons la high compression pour le stockage du texte, optimisant l’utilisation de l’espace disque sans compromettre la vitesse des requêtes.
- Adding Documents : La méthode
index.add()adds documents to index, parcourt le dossier de façon récursive et gère automatiquement tous les formats pris en charge.
Comment exporter du texte vers un fichier, un flux, une chaîne et des formats structurés
Après l’indexation, il est souvent nécessaire d’extraire le texte brut ou formaté d’un document. GroupDocs.Search propose quatre adaptateurs qui vous permettent d’écrire le contenu extrait vers un fichier, un flux en mémoire, une String Java, ou un modèle d’objet structuré.
Exportation du texte du document vers un fichier
FileOutputAdapter écrit le texte du document extrait dans le format choisi.
Vue d’ensemble
Le FileOutputAdapter écrit le texte extrait dans le format choisi (HTML, texte brut, etc.) directement dans un fichier sur le disque. Cela est utile pour générer des rapports lisibles par l’homme ou alimenter des pipelines de traitement en aval.
import com.groupdocs.search.*;
public class FeatureOutputToFile {
public static void main(String[] args) {
String indexFolder = YOUR_DOCUMENT_DIRECTORY + "/OutputAdapters/Index";
Index index = new Index(indexFolder);
// Assuming documents are already indexed, retrieve the first document
DocumentInfo[] documents = index.getIndexedDocuments();
if (documents.length > 0) {
DocumentInfo document = documents[0];
// Output document text to an HTML file
FileOutputAdapter fileOutputAdapter = new FileOutputAdapter(OutputFormat.Html, YOUR_OUTPUT_DIRECTORY + "/Text.html");
index.getDocumentText(document, fileOutputAdapter);
}
}
}
Explication
- FileOutputAdapter : Convertit le texte du document indexé en HTML et l’écrit dans le chemin de fichier spécifié, en préservant le formatage de base tel que les titres et les tableaux.
Exportation du texte du document vers un flux
StreamOutputAdapter diffuse le texte du document extrait dans un ByteArrayOutputStream sans créer de fichier temporaire.
Vue d’ensemble
Lorsque vous avez besoin du contenu uniquement temporairement – par exemple pour l’envoyer via HTTP ou l’intégrer dans une réponse web – utilisez le StreamOutputAdapter. Il diffuse le texte dans un ByteArrayOutputStream, évitant ainsi la surcharge de création d’un fichier temporaire.
import com.groupdocs.search.*;
import java.io.ByteArrayOutputStream;
public class FeatureOutputToStream {
public static void main(String[] args) {
String indexFolder = YOUR_DOCUMENT_DIRECTORY + "/OutputAdapters/Index";
Index index = new Index(indexFolder);
// Assuming documents are already indexed, retrieve the first document
DocumentInfo[] documents = index.getIndexedDocuments();
if (documents.length > 0) {
DocumentInfo document = documents[0];
// Output document text to a stream in HTML format
ByteArrayOutputStream stream = new ByteArrayOutputStream();
StreamOutputAdapter streamOutputAdapter = new StreamOutputAdapter(OutputFormat.Html, stream);
index.getDocumentText(document, streamOutputAdapter);
}
}
}
Explication
- StreamOutputAdapter : Diffuse le texte du document dans un
ByteArrayOutputStream, permettant une manipulation flexible sans toucher au système de fichiers.
Exportation du texte du document vers une chaîne
StringOutputAdapter capture l’ensemble du texte du document dans un seul objet String.
Vue d’ensemble
Pour un journal rapide, du débogage ou un affichage UI, le StringOutputAdapter capture tout le texte du document dans une unique String.
import com.groupdocs.search.*;
public class FeatureOutputToString {
public static void main(String[] args) {
String indexFolder = YOUR_DOCUMENT_DIRECTORY + "/OutputAdapters/Index";
Index index = new Index(indexFolder);
// Assuming documents are already indexed, retrieve the first document
DocumentInfo[] documents = index.getIndexedDocuments();
if (documents.length > 0) {
DocumentInfo document = documents[0];
// Output document text to a string in HTML format
StringOutputAdapter stringOutputAdapter = new StringOutputAdapter(OutputFormat.Html);
index.getDocumentText(document, stringOutputAdapter);
String result = stringOutputAdapter.getResult();
}
}
}
Explication
- StringOutputAdapter : Capture le texte du document dans une
String, facilitant son inclusion dans les journaux, la sortie console ou les composants UI.
Exportation du texte du document vers un format structuré
StructuredOutputAdapter renvoie un modèle d’objet riche contenant paragraphes, tableaux et métadonnées personnalisées.
Vue d’ensemble
Le StructuredOutputAdapter renvoie un modèle d’objet riche contenant paragraphes, tableaux et métadonnées personnalisées. Ce format est idéal pour les pipelines de traitement du langage naturel (NLP) ou les flux d’extraction de données.
import com.groupdocs.search.*;
public class FeatureOutputToStructure {
public static void main(String[] args) {
String indexFolder = YOUR_DOCUMENT_DIRECTORY + "/OutputAdapters/Index";
Index index = new Index(indexFolder);
// Assuming documents are already indexed, retrieve the first document
DocumentInfo[] documents = index.getIndexedDocuments();
if (documents.length > 0) {
DocumentInfo document = documents[0];
// Output document text to a structured format like PlainText
StructuredOutputAdapter structuredOutputAdapter = new StructuredOutputAdapter(OutputFormat.PlainText);
index.getDocumentText(document, structuredOutputAdapter);
}
}
}
Explication
- StructuredOutputAdapter : Extrait le texte du document dans un format structured text extraction, permettant une analyse fine, l’extraction de champs et l’intégration avec des pipelines d’apprentissage automatique.
Problèmes courants et solutions
| Problème | Cause | Solution |
|---|---|---|
| Index non créé | Chemin du dossier incorrect ou permissions d’écriture manquantes | Vérifiez que indexFolder existe et que l’application a les droits d’écriture |
| Aucun document retourné | index.add() non appelé ou dossier source incorrect | Assurez‑vous que documentsFolder pointe vers le bon répertoire et contient des types de fichiers pris en charge |
| Fichier de sortie vide | Chemin de l’adaptateur de sortie invalide ou répertoires manquants | Créez le répertoire cible (YOUR_OUTPUT_DIRECTORY) avant d’exécuter |
| Pics de mémoire avec de gros fichiers | Chargement du fichier entier en mémoire | Utilisez StreamOutputAdapter pour traiter les données de façon incrémentielle |
Questions fréquentes
Q : Puis‑je utiliser GroupDocs.Search avec d’autres langages JVM comme Kotlin ou Scala ?
R : Oui, la bibliothèque est pure Java et fonctionne parfaitement avec n’importe quel langage JVM.
Q : Comment la compression affecte‑t‑elle la vitesse de recherche ?
R : La haute compression réduit l’utilisation du disque jusqu’à 70 % et n’ajoute qu’une surcharge CPU minimale pendant l’indexation ; la latence des requêtes reste inférieure à 100 ms pour des charges de travail typiques.
Q : Est‑il possible de mettre à jour un index existant sans le reconstruire ?
R : Absolument. Utilisez index.add() pour les nouveaux fichiers et index.remove() pour supprimer les anciens, permettant des mises à jour incrémentielles.
Q : Quel format de sortie est le meilleur pour les pipelines de traitement du langage naturel ?
R : Le résultat PlainText de l’adaptateur structured text extraction fournit un contenu propre, indépendant de la langue, idéal pour les tâches NLP.
Q : Ai‑je besoin d’une licence pour le développement et les tests ?
R : Une licence d’essai gratuite suffit pour le développement et l’évaluation ; les déploiements en production nécessitent une licence achetée.
Conclusion
Vous disposez maintenant d’un flux de travail complet, prêt pour la production, pour how to create index, ajouter des documents et extraire leur texte dans tous les formats dont vous pourriez avoir besoin. Commencez par configurer l’Index avec la compression, ajoutez votre collection de documents, et choisissez l’adaptateur de sortie approprié pour votre scénario en aval — que ce soit pour générer des rapports HTML, alimenter un modèle NLP ou diffuser du contenu vers un client web. Expérimentez les API de mise à jour incrémentielle pour garder votre index à jour sans reconstructions coûteuses, et vous bénéficierez d’une recherche rapide et fiable sur n’importe quel référentiel de documents.
Last Updated: 2026-06-27
Tested With: GroupDocs.Search 25.4 for Java
Author: GroupDocs