Comment créer un index de recherche en texte intégral java avec des homophones

Dans ce guide, vous apprendrez à créer un java full text search en utilisant GroupDocs.Search, à y ajouter des documents et à activer la prise en charge des homophones afin que les recherches comprennent les mots qui sonnent de la même façon. À la fin du tutoriel, vous disposerez d’un index rapide et sensible à la langue, pouvant être interrogé en millisecondes, rendant vos applications plus conviviales et précises.

Réponses rapides

  • Qu’est‑ce qu’un index de recherche ? Une structure de données qui permet une recherche en texte intégral rapide à travers les documents.
  • Pourquoi utiliser la reconnaissance d’homophones ? Elle améliore le rappel en faisant correspondre les mots qui sonnent de la même façon, par ex., « mail » vs. « male ».
  • Quelle bibliothèque fournit cela en Java ? GroupDocs.Search for Java (v25.4).
  • Ai‑je besoin d’une licence ? Un essai gratuit suffit pour l’évaluation ; une licence permanente est requise pour la production.
  • Quelle version de Java est requise ? JDK 8 ou supérieur.

Qu’est‑ce que java full text search ?

java full text search est le processus d’indexation du contenu des documents afin de pouvoir interroger le texte rapidement et récupérer les fichiers pertinents en temps réel. L’index stocke les termes tokenisés, les positions et les métadonnées, permettant des réponses de recherche en moins d’une seconde même sur de grandes collections.

Pourquoi utiliser GroupDocs.Search pour Java ?

GroupDocs.Search prend en charge plus de 50 formats de fichiers — y compris PDF, DOCX, XLSX, PPTX et HTML — tout en offrant un dictionnaire d’homophones intégré qui augmente le rappel jusqu’à 30 % pour les termes ambigus. L’API abstrait les détails d’indexation de bas niveau, vous permettant de vous concentrer sur la logique métier. Elle offre également une intégration facile avec les projets Maven et une documentation claire pour un développement rapide.

Prérequis

Avant de plonger dans le code, assurez‑vous d’avoir les éléments suivants :

  • GroupDocs.Search for Java (disponible via Maven ou téléchargement direct).
  • Un JDK compatible (8 ou plus récent).
  • Un IDE tel que IntelliJ IDEA ou Eclipse.
  • Connaissances de base en Java et Maven.

Bibliothèques et dépendances requises

Vous aurez besoin de GroupDocs.Search pour Java. Incluez‑le en utilisant Maven ou téléchargez‑le directement.

Installation Maven :
Ajoutez ce qui suit à 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>

Téléchargement direct :
Sinon, téléchargez la dernière version depuis GroupDocs.Search for Java releases.

Exigences de configuration de l’environnement

Assurez‑vous d’avoir un JDK compatible installé (JDK 8 ou supérieur) et un IDE comme IntelliJ IDEA ou Eclipse configuré sur votre machine.

Prérequis de connaissances

Une familiarité avec les concepts de programmation Java et une expérience de l’utilisation de Maven pour la gestion des dépendances seront bénéfiques. Une compréhension de base de l’indexation de documents et des algorithmes de recherche peut également aider.

Configuration de GroupDocs.Search pour Java

Une fois les prérequis résolus, la configuration de GroupDocs.Search est simple :

  1. Installer via Maven ou télécharger directement depuis les liens fournis.
  2. Obtenir une licence : Vous pouvez commencer avec un essai gratuit ou obtenir une licence temporaire en visitant GroupDocs Purchase Page.
  3. Initialiser la bibliothèque : Le fragment ci‑dessous montre le code minimal requis pour commencer à utiliser GroupDocs.Search.
import com.groupdocs.search.*;

public class SetupExample {
    public static void main(String[] args) {
        // Define the directory for storing index files.
        String indexFolder = "path/to/index/directory";
        
        // Initialize an Index instance.
        Index index = new Index(indexFolder);
        System.out.println("GroupDocs.Search initialized successfully.");
    }
}

Guide d’implémentation

Maintenant que l’environnement est prêt, explorons les fonctionnalités principales dont vous aurez besoin pour créer un index de recherche en texte intégral java et gérer les homophones.

Création et gestion d’un index

Vue d’ensemble

Créer un index de recherche est la première étape pour gérer efficacement les documents. Cela permet une récupération rapide d’informations basée sur le contenu de vos documents.

Étapes pour créer un index

Étape 1 : Spécifiez le répertoire pour vos fichiers d’index.

String indexFolder = "YOUR_INDEX_DIRECTORY";
Index index = new Index(indexFolder);

La classe Index représente le conteneur searchable qui contient les termes tokenisés et les métadonnées pour chaque document, fournissant la structure principale qui permet une exécution rapide des requêtes et un stockage efficace des informations de documents à travers l’ensemble de l’index.

Étape 2 : Ajoutez des documents depuis un dossier spécifié dans cet index.

String documentsFolder = "YOUR_DOCUMENTS_SOURCE_DIRECTORY";
index.add(documentsFolder);
System.out.println("Documents added to the index.");

Appeler index.add() ingère chaque fichier, extrait le texte et remplit les structures internes nécessaires aux requêtes rapides, garantissant que chaque document est entièrement indexé et immédiatement searchable sans nécessiter une étape de traitement séparée.

Comment ajouter des documents à l’index

Vous pouvez ajouter des fichiers programmatiquement plus tard en appelant à nouveau index.add() avec un nouveau chemin de dossier ou des chemins de fichiers individuels. Cette approche incrémentale maintient l’index à jour sans reconstruction complète. Ajouter des documents de cette manière vous permet de conserver un index actif qui reflète les dernières modifications de contenu, assurant une disponibilité continue de la recherche pour les utilisateurs finaux et réduisant les temps d’arrêt associés aux opérations de ré‑indexation par lots.

Récupération des homophones pour un mot

Récupérer les homophones pour un terme spécifique aide le moteur de recherche à prendre en compte les orthographes alternatives qui sonnent de la même façon, améliorant le rappel pour les requêtes où les utilisateurs peuvent faire une faute de frappe ou utiliser différentes variantes. En élargissant la requête avec des équivalents phonétiques, le moteur peut faire correspondre les documents contenant l’une des formes homophones, offrant des résultats plus complets.

La classe HomophoneDictionary stocke des groupes de mots partageant la même prononciation, agissant comme un référentiel central que le moteur de recherche consulte lorsqu’il élargit les requêtes avec des alternatives phonétiques, améliorant ainsi la pertinence des résultats de recherche.

String[] homophones = index.getDictionaries().getHomophoneDictionary().getHomophones("braid");

Récupération des groupes d’homophones

Regrouper les homophones offre une méthode structurée pour gérer les mots à multiples sens, permettant aux développeurs de récupérer des ensembles complets d’équivalents phonétiques en une seule opération. Cela peut être utile pour l’analyse, la gestion de dictionnaires personnalisés ou les mises à jour massives de la liste d’homophones.

Chaque groupe retourné par getGroups() contient des mots interchangeables dans les recherches phonétiques, et la méthode fournit une collection complète de ces groupes afin que vous puissiez inspecter, modifier ou exporter l’ensemble complet des relations d’homophones maintenues par le dictionnaire.

String[][] groups = index.getDictionaries().getHomophoneDictionary().getHomophoneGroups("braid");

Vidage du dictionnaire d’homophones

Supprimer les entrées obsolètes ou inutiles garantit que votre dictionnaire reste pertinent et n’introduit pas de bruit dans les résultats de recherche. Cette opération est généralement effectuée lorsque vous devez réinitialiser le dictionnaire à son état par défaut avant de charger un nouvel ensemble personnalisé.

La méthode clear() supprime toutes les entrées personnalisées, revenant à l’ensemble par défaut, et garantit que tous les groupes d’homophones précédemment ajoutés sont entièrement supprimés, offrant une base propre pour la configuration ultérieure du dictionnaire.

if (index.getDictionaries().getHomophoneDictionary().getCount() > 0) {
    index.getDictionaries().getHomophoneDictionary().clear();
}
System.out.println("Homophone dictionary cleared.");

Ajout d’homophones au dictionnaire

Personnaliser votre dictionnaire d’homophones permet des capacités de recherche adaptées qui reflètent la terminologie spécifique à un domaine, l’argot ou les noms de marque. En ajoutant de nouveaux groupes, vous pouvez garantir que les recherches reconnaissent les relations phonétiques prévues propres à votre application.

Utilisez addGroup() pour insérer une liste de mots aux sons synonymes, améliorant le rappel pour la terminologie spécifique à un domaine, et la méthode valide chaque entrée pour éviter les doublons tout en intégrant le nouveau groupe de manière transparente dans la structure existante du dictionnaire.

String[][] homophoneGroups = {
    new String[] { "awe", "oar", "or", "ore" },
    new String[] { "aye", "eye", "i" },
    new String[] { "call", "caul" }
};
index.getDictionaries().getHomophoneDictionary().addRange(homophoneGroups);
System.out.println("Homophones added to the dictionary.");

Exportation et importation de dictionnaires d’homophones

Exporter et importer des dictionnaires peut être bénéfique pour la sauvegarde ou la migration, vous permettant de conserver des configurations personnalisées entre environnements ou de les partager avec les membres de l’équipe. Cette fonctionnalité prend en charge le format JSON pour une lecture facile et une intégration avec d’autres outils.

Ces méthodes vous permettent de persister des dictionnaires personnalisés sous forme de fichiers JSON pour une réutilisation facile, et le processus d’exportation capture l’état complet du dictionnaire tandis que la routine d’importation valide la structure JSON avant de l’appliquer à l’instance active du dictionnaire.

String fileName = "path/to/exported/dictionary.file";
index.getDictionaries().getHomophoneDictionary().exportDictionary(fileName);

Étape 2 : Ré‑importer depuis un fichier si nécessaire.

index.getDictionaries().getHomophoneDictionary().importDictionary(fileName);
System.out.println("Homophone dictionary imported successfully.");

L’opération d’importation lit le fichier JSON, reconstruit chaque groupe d’homophones et les fusionne dans le dictionnaire actuel, garantissant que toutes les entrées personnalisées sont restaurées avec précision et prêtes à être utilisées immédiatement dans les requêtes de recherche.

Recherche en utilisant les homophones

Exploitez la recherche d’homophones pour une récupération de documents complète, permettant aux utilisateurs de trouver du contenu pertinent même lorsqu’ils utilisent des orthographes différentes qui sonnent de la même façon. Cette fonctionnalité peut améliorer considérablement l’expérience utilisateur dans les domaines multilingues ou fortement phonétiques.

Définir setUseHomophoneSearch(true) indique au moteur d’élargir les requêtes avec des équivalents phonétiques avant l’exécution, et cette option fonctionne en conjonction avec d’autres paramètres de recherche tels que le fuzzy matching pour offrir une expérience de recherche robuste et flexible qui capture un large éventail de résultats pertinents.

String query = "caul";
SearchOptions options = new SearchOptions();
options.setUseHomophoneSearch(true);
SearchResult result = index.search(query, options);

System.out.println("Search completed. Results found: " + result.getDocumentCount());

Applications pratiques

Comprendre comment implémenter ces fonctionnalités ouvre un monde d’applications pratiques :

  1. Gestion de documents juridiques : Distinguer entre des termes juridiques similaires comme « lease » vs. « least ».
  2. Création de contenu éducatif : Assurer que les supports pédagogiques sont exempts de formulations ambiguës pouvant semer la confusion chez les apprenants.
  3. Systèmes de support client : Améliorer la précision de la recherche dans la base de connaissances, aidant les agents à localiser les bons articles plus rapidement.

Considérations de performance

Pour garder votre java full text search performant :

  • Mettre à jour l’index régulièrement pour refléter les changements de documents.
  • Surveiller l’utilisation de la mémoire et ajuster les paramètres du heap Java pour les grands ensembles de données.
  • Fermer rapidement les ressources inutilisées (par ex., appeler index.close() lorsqu’il n’est plus nécessaire).

Conclusion

À présent, vous devriez avoir une bonne maîtrise de comment indexer des documents avec GroupDocs.Search, gérer les homophones et affiner votre expérience de recherche. Ces outils sont inestimables pour fournir des résultats précis et améliorer l’efficacité globale de la gestion de documents.

Questions fréquentes

Q : Puis‑je utiliser le dictionnaire d’homophones avec des langues non‑anglais ?
R : Oui, vous pouvez remplir le dictionnaire avec n’importe quelle langue tant que vous fournissez les groupes de mots appropriés.

Q : Ai‑je besoin d’une licence pour les tests de développement ?
R : Une licence d’essai gratuite suffit pour le développement et les tests ; une licence payante est requise pour les déploiements en production.

Q : Quelle taille peut atteindre mon index ?
R : La taille de l’index est limitée uniquement par vos ressources matérielles ; allouez suffisamment d’espace disque et de mémoire pour des performances optimales.

Q : Est‑il possible de combiner la recherche d’homophones avec le fuzzy matching ?
R : Absolument. Activez à la fois setUseHomophoneSearch(true) et setFuzzySearch(true) dans SearchOptions pour profiter du meilleur des deux.

Q : Que se passe‑t‑il si j’ajoute des groupes d’homophones en double ?
R : Les entrées en double sont ignorées ; le dictionnaire conserve un ensemble unique de groupes de mots.


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

Tutoriels associés