Comment implémenter la recherche plein texte java avec GroupDocs.Search

À l’ère des applications axées sur les données, la recherche plein texte java est essentielle pour transformer d’énormes collections de documents en bases de connaissances instantanément consultables. Que vous construisiez un portail d’entreprise ou une utilité de bureau légère, un réseau de recherche bien configuré peut réduire la latence des requêtes de secondes à millisecondes et maintenir la pertinence des résultats à mesure que les données augmentent. Ce tutoriel vous guide dans le déploiement de GroupDocs.Search for Java, l’ajout de fichiers à rechercher, la configuration des répertoires sur les nœuds, et l’activation de l’indexation en temps réel afin que votre index reste à jour sans intervention manuelle.

Pourquoi c’est important : Un index de recherche plein texte java réduit la latence des requêtes, s’adapte au volume de données et apporte des capacités plein texte puissantes à toute solution basée sur Java — portails web, applications de bureau ou microservices cloud.

Réponses rapides

  • Quel est le but principal de GroupDocs.Search ? Il fournit un moteur de recherche java évolutif qui indexe et recherche des documents à travers un réseau distribué.
  • Quelle version devrais-je utiliser ? La dernière version stable (par ex., 25.4) est recommandée pour les nouveaux projets.
  • Ai-je besoin d’une licence ? Un essai gratuit de 30 jours est disponible ; une licence permanente est requise pour une utilisation en production.
  • Puis-je ajouter à la fois des fichiers et des répertoires entiers ? Oui – utilisez les assistants addFiles et addDirectories pour ingérer le contenu.
  • Quelle version de Java est requise ? Java 8 ou supérieur, avec Maven pour la gestion des dépendances.
  • Comment fonctionne l’indexation en temps réel java ? En s’abonnant aux événements du nœud, vous pouvez déclencher une réindexation automatique lorsque les fichiers changent.

Qu’est‑ce que « create searchable index java » ?

Créer un index consultable en Java signifie construire une structure de données qui associe les termes aux documents les contenant, permettant des requêtes plein texte rapides. GroupDocs.Search for Java abstrait la lourde tâche, vous laissant vous concentrer sur l’alimentation des documents et le réglage du comportement de recherche.

Pourquoi utiliser GroupDocs.Search pour Java ?

GroupDocs.Search fournit un moteur de recherche java qui s’étend horizontalement, prend en charge plus de 50 formats d’entrée et de sortie, et offre une indexation pilotée par les événements. Le déploiement de plusieurs nœuds répartit la charge d’indexation, tandis que les contrôles de santé intégrés assurent la fiabilité du réseau. Il propose également des API RESTful et des analyseurs personnalisables pour une pertinence finement réglée.

Prérequis

  • JDK 8+ installé sur votre machine de développement.
  • Un IDE tel que IntelliJ IDEA ou Eclipse.
  • Connaissances de base en Java et Maven.
  • Accès à la bibliothèque GroupDocs.Search for Java (téléchargement ou Maven).

Configuration de GroupDocs.Search pour Java

Dépendance 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>

Conseil pro : Gardez le numéro de version à jour en consultant la page officielle des versions.

Vous pouvez également télécharger le JAR directement depuis le site officiel : GroupDocs.Search for Java releases.

Acquisition de licence

  • Essai gratuit : évaluation de 30 jours.
  • Licence temporaire : demandez pour des tests prolongés.
  • Achat : requis pour les déploiements en production.

Initialisation de base

Créez un objet de configuration qui pointe vers un dossier où les fichiers d’index seront stockés et définit le port de communication de base :

import com.groupdocs.search.Configuration;

class InitializeSearch {
    public static void main(String[] args) {
        String basePath = "your/base/path";
        int basePort = 8080;
        
        Configuration config = new ConfiguringSearchNetwork().configure(basePath, basePort);
        // Use this configuration for subsequent operations
    }
}

Comment créer un index consultable java avec GroupDocs.Search ?

Chargez un objet SearchConfiguration, démarrez un SearchNetworkNode, et appelez node.getIndexer().addFiles(...) pour remplir l’index. Ce modèle en une ligne lance un réseau de recherche plein texte java entièrement fonctionnel, prêt à accepter des requêtes immédiatement. Vous pouvez ensuite évoluer en ajoutant d’autres nœuds qui partagent le même chemin de base et la même plage de ports.

Fonctionnalité 1 – configuration et mise en place du réseau

La classe SearchConfiguration contient tous les paramètres nécessaires pour lancer un nœud.

import com.groupdocs.search.Configuration;
import com.groupdocs.search.scaling.*;

class ConfiguringSearchNetwork {
    public static Configuration configure(String basePath, int basePort) {
        // Configure the search network with specified base path and port
        return new Configuration(basePath, basePort);
    }
}
  • basePath – Répertoire où les données d’index seront persistées.
  • basePort – Port de départ ; chaque nœud incrémentera à partir de cette valeur.

Fonctionnalité 2 – déploiement des nœuds du réseau de recherche

SearchNetworkNode représente un service d’indexation individuel qui peut s’exécuter sur n’importe quelle machine.

import com.groupdocs.search.scaling.*;

class SearchNetworkDeployment {
    public static SearchNetworkNode[] deploy(String basePath, int basePort, Configuration configuration) {
        // Deploy nodes based on the provided configuration
        return new SearchNetworkNode[]{new SearchNetworkNode()};
    }
}

SearchNetworkNode est le composant d’exécution principal qui héberge un index, traite les événements d’ajout/suppression, et répond aux requêtes de recherche. Déployer plusieurs nœuds vous permet de créer des clusters de recherche plein texte java qui s’étendent horizontalement.

Fonctionnalité 3 – abonnement aux événements du nœud

Les mises à jour en temps réel maintiennent l’index synchronisé avec les changements du système de fichiers.

import com.groupdocs.search.scaling.*;

class SearchNetworkNodeEvents {
    public static void subscribe(SearchNetworkNode node) {
        // Logic to subscribe to the specified node's events
    }
}

En écoutant les événements, vous pouvez déclencher automatiquement la réindexation lorsque de nouveaux fichiers arrivent, réalisant une indexation pilotée par les événements sans scripts manuels.

Fonctionnalité 4 – ajout de répertoires au nœud du réseau

Utilisez cet assistant pour ajouter des répertoires au nœud, en collectant récursivement tous les documents pris en charge.

import java.io.File;
import java.util.ArrayList;

class DirectoryAdder {
    public static void addDirectories(SearchNetworkNode node, String... directoryPaths) {
        ArrayList<String> files = new ArrayList<>();
        for (String directoryPath : directoryPaths) {
            final File folder = new File(directoryPath);
            listFiles(folder, files);
        }
        addFiles(node, files.toArray(new String[0]));
    }

    private static void listFiles(final File folder, ArrayList<String> list) {
        for (final File fileEntry : folder.listFiles()) {
            if (fileEntry.isDirectory()) {
                listFiles(fileEntry, list);
            } else {
                list.add(fileEntry.getPath());
            }
        }
    }
}

La méthode DirectoryAdder.addDirectories(node, path) parcourt l’arborescence d’un dossier et appelle addFiles pour chaque fichier pris en charge, simplifiant l’ingestion massive.

Fonctionnalité 5 – ajout de fichiers au nœud du réseau

Lorsque vous avez besoin d’un contrôle fin, ajoutez des fichiers à la recherche individuellement :

import com.groupdocs.search.Document;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Date;
import org.apache.commons.io.FilenameUtils;
import com.groupdocs.search.Indexer;
import com.groupdocs.search.options.*;

class FileAdder {
    public static void addFiles(SearchNetworkNode node, String... filePaths) {
        try {
            InputStream[] streams = new FileInputStream[filePaths.length];
            Document[] documents = new Document[filePaths.length];
            for (int i = 0; i < filePaths.length; i++) {
                String filePath = filePaths[i];
                InputStream stream = new FileInputStream(filePath);
                streams[i] = stream;
                
                // Create a document from the input stream
                String fileName = FilenameUtils.getName(filePath);
                String extension = "." + FilenameUtils.getExtension(filePath);
                Document document = Document.createFromStream(
                    fileName,
                    new Date(),
                    extension,
                    stream);
                documents[i] = document;
            }

            // Initialize the indexer and configure options
            Indexer indexer = node.getIndexer();
            IndexingOptions options = new IndexingOptions();
            options.setUseRawTextExtraction(false);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

addFiles est une méthode qui accepte une liste de chemins de fichiers ou de flux, vous permettant d’indexer des documents depuis le stockage cloud, des caches temporaires ou des flux en mémoire.

Cas d’utilisation courants

  • Portails de documents d’entreprise qui nécessitent une recherche instantanée parmi des milliers de PDF et de fichiers Office.
  • Plateformes de e‑discovery juridique où de nouvelles preuves sont ajoutées en continu et doivent être recherchables en temps réel.
  • Systèmes de gestion de contenu qui stockent des images, des présentations et des feuilles de calcul et nécessitent une recherche plein texte.

Problèmes courants & solutions

ProblèmeRaisonSolution
Aucun document n’apparaît dans les résultats de rechercheIndex non validéAppelez node.getIndexer().commit() après avoir ajouté les fichiers.
Erreur de conflit de portUn autre service utilise basePortChoisissez un autre basePort ou vérifiez les ports libres.
Format de fichier non pris en chargeLa bibliothèque ne possède pas d’analyseurAssurez‑vous que l’extension du fichier est prise en charge ou ajoutez un extracteur personnalisé.

Conseils de dépannage

  • Vérifier la santé du nœud : Utilisez le point de terminaison de vérification de santé intégré (http://localhost:{port}/health) pour confirmer que chaque nœud fonctionne.
  • Surveiller l’utilisation de la mémoire : De gros lots de documents peuvent augmenter la consommation de mémoire ; indexez par morceaux plus petits et appelez commit() périodiquement.
  • Vérifier les journaux : GroupDocs.Search écrit des journaux détaillés dans le dossier basePath — examinez‑les pour détecter des erreurs d’analyse ou des délais d’attente réseau.

Questions fréquemment posées

Q : Puis‑je utiliser GroupDocs.Search sur une application Java basée sur le cloud ?
R : Oui. La bibliothèque fonctionne avec n’importe quel runtime Java, et vous pouvez pointer basePath vers un dossier monté en réseau ou un montage de stockage cloud.

Q : Comment mettre à jour l’index lorsqu’un fichier change ?
R : Abonnez‑vous aux événements du nœud (voir Fonctionnalité 3) et appelez à nouveau addFiles ou addDirectories pour les chemins modifiés.

Q : Existe‑t‑il une limite au nombre de nœuds que je peux déployer ?
R : En pratique, la limite est définie par votre matériel et la bande passante du réseau. L’API n’impose aucune contrainte stricte.

Q : Dois‑je redémarrer les nœuds après avoir ajouté de nouveaux fichiers ?
R : Non. L’ajout de fichiers déclenche l’indexation automatiquement ; vous n’avez besoin de valider que si vous différer l’opération.

Q : Quels formats de documents sont pris en charge nativement ?
R : PDFs, DOC/DOCX, XLS/XLSX, PPT/PPTX, TXT, HTML, et de nombreux types d’images — plus de 50 formats au total.

Q : Comment activer l’indexation en temps réel java pour un dossier qui reçoit des téléchargements en continu ?
R : Implémentez un observateur de système de fichiers (par ex., java.nio.file.WatchService) qui appelle DirectoryAdder.addDirectories(node, path) chaque fois qu’un nouveau fichier est détecté.


Dernière mise à jour : 2026-09-27
Testé avec : GroupDocs.Search for Java 25.4
Auteur : GroupDocs

Tutoriels associés