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 :
- Commencez par créer un Index en utilisant le dossier où se trouvent vos fichiers.
- Ajoutez le chemin du dossier principal à l’index.
- Fournissez la requête de recherche que vous souhaitez rechercher.
- Activez la magie de la recherche floue pour qu’elle comprenne les petites erreurs.
- Définissez le niveau de similarité dans l’algorithme flou.
- Exécutez la recherche en utilisant la méthode de recherche pour obtenir les résultats de la recherche.
- 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.
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.