Ricerca fuzzy utilizzando Java

La ricerca fuzzy ti aiuta a trovare contenuti simili, non esattamente uguali, nei tuoi dati. È estremamente utile quando sono presenti piccoli errori di battitura, errori di ortografia o variazioni nei dati. Questo articolo riguarda il modo in cui Java esegue la ricerca fuzzy per trovare file sparsi nelle cartelle.

Ecco alcuni esempi per elaborare il contenuto campione della ricerca fuzzy:

  • Potresti non essere sicuro che il documento utilizzi l’ortografia “colore” o “colore”.
  • Quando si cerca “John”, in realtà potrebbe essere scritto come “Jon” o forse “Jhon”.
  • Cercando di trovare “USA” anche se qualcuno digita “USA”
  • Se commetti un “errore”, oh aspetta, in realtà è un “errore”.

La soluzione per trovare tali contenuti è Fuzzy Search.

Libreria di ricerca fuzzy Java

Per effettuare ricerche fuzzy in Java, utilizzeremo l’API GroupDocs.Search for Java. L’API è altamente in grado di mostrare flessibilità e fornisce un grado personalizzabile di tolleranza agli errori. Questa funzionalità è utile quando si ha a che fare con variazioni linguistiche come l’inglese britannico e americano e con errori di battitura.

Con questa libreria, la ricerca fuzzy può essere eseguita all’interno di un’ampia varietà di formati di file. Il supporto non si limita solo a documenti Word (DOC, DOCX), fogli di calcolo (XLS, XLSX), presentazioni (PPT, PPTX), PDF, linguaggi di markup (HTML, XML), Markdown (MD), eBook (EPUB, CHM, FB2), e-mail (MSG, EML), note OneNote e persino archivi ZIP.

Se vuoi conoscere tutti i tipi di file che questa magia può gestire, dai un’occhiata alla documentazione.

Per iniziare, puoi prendere l’API dalla sezione download o semplicemente aggiungere le ultime configurazioni di repository e dipendenze Maven direttamente nelle tue applicazioni Java.

Eseguiamo la ricerca fuzzy nei file utilizzando Java

Seguire questi passaggi per eseguire una ricerca fuzzy in più file di vari formati di file all’interno delle cartelle utilizzando Java:

  1. Inizia creando un Indice utilizzando la cartella in cui si trovano i tuoi file.
  2. Aggiungi il percorso della cartella principale al file index.
  3. Fornisci la query di ricerca che desideri cercare.
  4. Attiva la magia di Fuzzy Search in modo che comprenda i piccoli errori.
  5. Imposta il livello di somiglianza nell’algoritmo Fuzzy.
  6. Eseguire la ricerca utilizzando il metodo di ricerca per ottenere i risultati della ricerca.
  7. Ora puoi attraversare SearchResults per creare o stampare l’output come preferisci.

Nel codice Java riportato di seguito, il programma cerca contenuti simili che siano più o meno quelli richiesti in tutti i file e le sottocartelle. Tollera gli errori di ortografia, fino al 25% di errori. Se dai un’occhiata al codice, vedrai che il livello di somiglianza è impostato su 0,75, che equivale alla corrispondenza del 75%. Se vuoi perfezionare la ricerca, basta cambiare il livello di somiglianza nel codice.

// Fuzzy Ricerca più file in più cartelle utilizzando Java

// Creare una cartella indice e aggiungervi la cartella del documento
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);

Dopo aver eseguito il codice, otterrai un elenco di risultati di ricerca fuzzy recuperati. Se vuoi vedere come stampare i risultati della ricerca, continua a leggere questo articolo.

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

Stampa dei risultati della ricerca

Il seguente codice Java fornisce due modi per presentare i risultati della ricerca.

  • Evidenzia tutte le corrispondenze approssimative.
  • Stampa i risultati in un formato leggibile e analizzabile
// Evidenzia e stampa i risultati della ricerca per tutti i documenti utilizzando 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());

        // Stampa dei termini trovati
        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]);
            }
        }
    }
}

Ottenere una licenza gratuita o una prova gratuita

Licenza gratuita

Ottieni una licenza temporanea gratuitamente per esplorare questa libreria senza vincoli.

Prova gratuita

Puoi scaricare la versione di prova gratuita dalla sezione download.

API Java per la ricerca all'interno di file e cartelle

Conclusione

In questo articolo abbiamo esplorato il metodo Java programmatico per eseguire la ricerca fuzzy. Aiuta a trovare parole con corrispondenza approssimativa che sono simili, anche se ci sono piccoli errori. Questa funzionalità è utile per gestire le differenze tra l’inglese britannico e quello americano, gli errori di battitura, i cambi di nome e i suoni simili nelle parole.

Per ulteriori informazioni sull’API, consulta la documentazione.

Se hai domande o vuoi discutere di più, vai al forum.


Guarda anche