Recherche floue utilisant Java

La recherche floue vous aide à trouver du contenu similaire, mais pas exactement identique, dans vos données. C’est très pratique lorsqu’il y a de petites fautes de frappe, des fautes d’orthographe ou des variations dans les données. Cet article porte sur la manière Java d’effectuer une recherche floue pour rechercher des fichiers dispersés dans des dossiers.

Voici quelques exemples pour élaborer l’exemple de contenu de recherche floue :

  • Vous ne savez peut-être pas si le document utilise l’orthographe « couleur » ou « couleur ».
  • Lorsque vous recherchez « John », il peut en fait être orthographié « Jon » ou peut-être « Jhon ».
  • Essayer de trouver “USA” même si quelqu’un tape “USA”
  • Si vous faites une « erreur », oh attendez, c’est en fait une « erreur ».

La solution pour trouver un tel contenu est la recherche floue.

Bibliothèque de recherche floue Java

Pour effectuer des recherches floues en Java, nous utiliserons l’API GroupDocs.Search for Java. L’API est hautement capable de faire preuve de flexibilité et offre un degré personnalisable de tolérance aux erreurs. Cette fonctionnalité est utile lorsqu’il s’agit de variations linguistiques telles que l’anglais britannique et américain, ainsi que de fautes de frappe.

Avec cette bibliothèque, la recherche floue peut être effectuée dans une grande variété de formats de fichiers. La prise en charge ne se limite pas aux documents Word (DOC, DOCX), aux feuilles de calcul (XLS, XLSX), aux présentations (PPT, PPTX), aux PDF, aux langages de balisage (HTML, XML), Markdown (MD), aux livres électroniques (EPUB, CHM, FB2), les e-mails (MSG, EML), les notes OneNote et même les archives ZIP.

Si vous souhaitez connaître tous les types de fichiers que cette magie peut gérer, jetez simplement un coup d’œil à la documentation.

Pour commencer, vous pouvez récupérer l’API dans la section de téléchargement, ou simplement ajouter les dernières configurations Maven du référentiel et des dépendances directement dans vos applications Java.

Faisons une recherche floue dans les fichiers en utilisant Java

Suivez ces étapes pour effectuer une recherche floue dans plusieurs fichiers de différents formats de fichiers dans des dossiers à l’aide de Java :

  1. Commencez par créer un Index en utilisant le dossier où se trouvent vos fichiers.
  2. Ajoutez le chemin du dossier principal à l’index.
  3. Fournissez la requête de recherche que vous souhaitez rechercher.
  4. Activez la magie de la recherche floue pour qu’elle comprenne les petites erreurs.
  5. Définissez le niveau de similarité dans l’algorithme flou.
  6. Exécutez la recherche en utilisant la méthode de recherche pour obtenir les résultats de la recherche.
  7. Maintenant, vous pouvez parcourir les SearchResults pour créer ou imprimer la sortie à votre guise.

Dans le code Java ci-dessous, le programme recherche un contenu similaire qui correspond à ce que vous avez demandé dans tous les fichiers et sous-dossiers. Il tolère les fautes d’orthographe, jusqu’à 25 % d’erreur. Si vous regardez le code, vous verrez que le niveau de similarité est défini sur 0,75, ce qui équivaut à une correspondance de 75 %. Si vous souhaitez affiner la recherche, modifiez simplement le niveau de similarité dans le code.

// Recherche floue de plusieurs fichiers dans plusieurs dossiers à l'aide de Java

// Créer un dossier d'index et y ajouter le dossier du document
Index index = new Index("path/indexing-folder-path");
index.add("path/parent-folder");

SearchOptions options = new SearchOptions();
options.getFuzzySearch().setEnabled(true); // Enabling the fuzzy search
options.getFuzzySearch().setFuzzyAlgorithm(new SimilarityLevel(0.75));

String query = "nulla"; // search approximate matches of the provided query  
SearchResult result = index.search(query, options);

Après avoir exécuté le code, vous obtiendrez une liste des résultats de recherche floue récupérés. Si vous souhaitez savoir comment imprimer les résultats de la recherche, continuez à lire cet article.

Query: nulla
 Documents: 2
 Occurrences: 135

     Document: Lorem ipsum.docx
     Occurrences: 132
         Field: content
         Occurrences: 132
             nulla               98
             nullam              34

     Document: EnglishText.txt
     Occurrences: 3
         Field: content
         Occurrences: 3
             dull                1
             full                1
             fully               1

Impression des résultats de recherche

Le code Java suivant propose deux manières de présenter vos résultats de recherche.

  • Mettez en surbrillance toutes les correspondances approximatives.
  • Imprimez les résultats dans un format lisible et analysable
// Mettre en surbrillance et imprimer les résultats de la recherche pour tous les documents utilisant Java
for (int i = 0 ; i < result.getDocumentCount(); i++)
{
    FoundDocument document = result.getFoundDocument(i);
  
    OutputAdapter outputAdapter = new FileOutputAdapter(OutputFormat.Html, "path/Highlight" + i + ".html");
    Highlighter highlighter = new DocumentHighlighter(outputAdapter);
    index.highlight(document, highlighter);
 
    System.out.println("\tDocument: " + document.getDocumentInfo().getFilePath());
    System.out.println("\tOccurrences: " + document.getOccurrenceCount());
    for (FoundDocumentField field : document.getFoundFields()) {
        System.out.println("\t\tField: " + field.getFieldName());
        System.out.println("\t\tOccurrences: " + field.getOccurrenceCount());

        // Impression des termes trouvés
        if (field.getTerms() != null) {
            for (int k = 0; k < field.getTerms().length; k++) {
                System.out.println("\t\t\t" + field.getTerms()[k] + " - " + field.getTermsOccurrences()[k]);
            }
        }
    }
}

Obtenir une licence gratuite ou un essai gratuit

License gratuite

Obtenez gratuitement une licence temporaire pour explorer cette bibliothèque sans contraintes.

Essai gratuit

Vous pouvez télécharger l’essai gratuit depuis la section téléchargements.

API Java pour la recherche dans les fichiers et dossiers

Conclusion

Dans cet article, nous avons exploré la méthode Java programmatique pour effectuer une recherche floue. Cela aide à trouver des mots correspondants à peu près et qui sont assez similaires, même s’il y a de petites erreurs. Cette fonctionnalité est pratique pour gérer les différences entre l’anglais britannique et américain, les fautes de frappe, les changements de nom et les sons similaires dans les mots.

Pour en savoir plus sur l’API, consultez la documentation.

Si vous avez des questions ou souhaitez en discuter davantage, rendez-vous sur le forum.


Voir également