Di recente abbiamo discusso, come ottenere tutti i sinonimi di qualsiasi parola. Sarebbe meraviglioso se potessimo individuare questi sinonimi all’interno di molti documenti diversi. In questo articolo vedremo come cercare una parola e i suoi sinonimi in più file usando Java.

I seguenti sono gli argomenti trattati di seguito:

API Java - Cerca sinonimi in più file

GroupDocs.Search mostra l’API Java GroupDocs.Search for Java. Consente di cercare parole e i loro sinonimi in vari file multipli della cartella specificata. Supporta un lungo elenco di diversi formati di file e varie tecniche di ricerca Alcune di queste funzionalità sono menzionate di seguito e puoi usarle in combinazione per raggiungere il tuo obiettivo:

  • Ricerca booleana
  • Ricerca case-sensitive
  • Evidenzia i risultati della ricerca
  • Ricerca omofonica
  • Ricerca di frasi
  • Cerca espressioni regolari
  • Ricerca per blocchi
  • Ricerca sinonimo

Scarica o configura

Puoi scaricare il file JAR dalla sezione download, o semplicemente ottenere l’ultimo repository e le configurazioni delle dipendenze per il pom.xml delle tue applicazioni Java basate su Maven.

<repository>
	<id>GroupDocsJavaAPI</id>
	<name>GroupDocs Java API</name>
	<url>http://repository.groupdocs.com/repo/</url>
</repository>
<dependency>
        <groupId>com.groupdocs</groupId>
        <artifactId>groupdocs-search</artifactId>
        <version>21.8</version> 
</dependency>

Trova i sinonimi in più file usando Java

Passiamo rapidamente alla ricerca di sinonimi all’interno dei file. I seguenti passaggi mostrano come cercare i sinonimi (parole con significati simili) nei file all’interno di una cartella utilizzando Java:

  • Definisci la cartella dell’indice, la cartella del documento e la query (la parola da cercare).
  • Crea un indice usando la cartella dell’indice definita usando la classe Indice.
  • Aggiungi la cartella dei documenti all’indice.
  • Abilita la ricerca dei sinonimi usando SearchOptions.
  • Chiama il metodo search della classe Index e passa la query con le opzioni di ricerca.
  • Stampa il riepilogo utilizzando le proprietà della classe SearchResult recuperata.

Il seguente codice sorgente mostra come trovare tutti i sinonimi all’interno dei file utilizzando Java:

// Cerca sinonimi in più file e cartelle utilizzando Java
String indexFolder = "path/indexFolder";
String documentsFolder = "path/documentsFolder";
String query = "make";

// Creazione di un indice nella cartella specificata
Index index = new Index(indexFolder);
index.add(documentsFolder);

// Creazione di un oggetto delle opzioni di ricerca
SearchOptions options = new SearchOptions();
options.setUseSynonymSearch(true); // Enable Synonym Search

// Cerca la parola "fare"
// Oltre alla parola 'make', verranno cercati anche i sinonimi 'do, get, have, ...'
SearchResult result = index.search(query, options);

System.out.println("Query: " + query);
System.out.println("Documents: " + result.getDocumentCount());
System.out.println("Word & Synonym Occurrences: " + result.getOccurrenceCount());

Quello che segue è l’output del codice precedente:

Query: **make**
Documents: 3
Word & Synonym Occurrences: 44 

Dai risultati della ricerca ottenuti nel passaggio precedente, puoi ottenere le informazioni relative a ciascuna parola e sinonimo della ricerca. I seguenti passaggi presentano i risultati in dettaglio dopo aver ottenuto tutti i sinonimi e il loro numero di occorrenze all’interno di ciascun documento:

  • Innanzitutto, esegui la ricerca per ottenere il Risultato della ricerca.
  • Attraversa il risultato della ricerca per lavorare con ogni FoundDocument.
  • Stampa le rispettive proprietà di ogni FoundDocument.
  • Ora, estrai e poi attraversa il FoundDocumentField all’interno di ogni FoundDocument.
  • Ogni FoundDocumentField contiene i suoi termini, occorrenze e altre proprietà. Usa il rispettivo getter.

Il codice sorgente seguente mostra il risultato della ricerca dei sinonimi insieme al numero di occorrenze di ciascun termine cercato in Java.

// Stampa dei risultati della ricerca dei sinonimi in Java
System.out.println("Query: " + query);
System.out.println("Documents: " + result.getDocumentCount());
System.out.println("Word & Synonym Occurrences: " + result.getOccurrenceCount());

for (int i = 0; i < result.getDocumentCount(); i++) {
    FoundDocument document = result.getFoundDocument(i);
    System.out.println("Document: " + document.getDocumentInfo().getFilePath());
    System.out.println("Occurrences: " + document.getOccurrenceCount());

  for (FoundDocumentField field : document.getFoundFields()) {
        System.out.println("\tField: " + field.getFieldName());
        System.out.println("\tOccurrences: " + document.getOccurrenceCount());
  
        // Termini trovati in stampa
        if (field.getTerms() != null) {
            for (int k = 0; k < field.getTerms().length; k++) {
                System.out.println("\t\t" + field.getTerms()[k] + "\t - \t" + field.getTermsOccurrences()[k]);
            }
        }
    }
}

Quello che segue è l’output del codice precedente:

Query: **make**
Documents: 2
Total occurrences: 22

Document: C:/documents/sample.docx
Occurrences: 13
    Field: content
    Occurrences: 13
        **make**  -  2
        **have**  -  1
        **get**  -  2
        **do**  -  8
- - - - - - - - - - - - - - - - 
Document: C:/documents/sample.txt
Occurrences: 11
    Field: content
    Occurrences: 11
        **make**  -  1
        **have**  -  2
        **get**  -  1
        **do**  -  7
- - - - - - - - - - - - - - - - 
Document: C:/documents/sample.pdf
Occurrences: 20
    Field: content
    Occurrences: 20
        **make**  -  2
        **have**  -  2
        **get**  -  2
        **do**  -  14 

Sinonimi di ricerca e risultati di stampa in Java – Codice completo

Uniamo i due passaggi precedenti, quindi ecco il codice sorgente completo. In primo luogo, trova tutti i sinonimi in base alla query fornita. Quindi, stampa tutte le occorrenze di ogni sinonimo in ogni documento in Java.

// Cerca sinonimi in più file e cartelle utilizzando Java
String indexFolder = "path/indexFolder";
String documentsFolder = "path/documentsFolder";
String query = "make";

// Creazione di un indice nella cartella specificata
Index index = new Index(indexFolder);
index.add(documentsFolder);

// Creazione di un oggetto delle opzioni di ricerca
SearchOptions options = new SearchOptions();
options.setUseSynonymSearch(true); // Enable Synonym Search

// Cerca la parola "fare"
// Oltre alla parola 'make', verranno cercati anche i sinonimi 'do, get, have, ...'
SearchResult result = index.search(query, options);

System.out.println("Query: " + query);
System.out.println("Documents: " + result.getDocumentCount());
System.out.println("Word & Synonym Occurrences: " + result.getOccurrenceCount());

for (int i = 0; i < result.getDocumentCount(); i++) {
    FoundDocument document = result.getFoundDocument(i);
    System.out.println("Document: " + document.getDocumentInfo().getFilePath());
    System.out.println("Occurrences: " + document.getOccurrenceCount());

  for (FoundDocumentField field : document.getFoundFields()) {
        System.out.println("\tField: " + field.getFieldName());
        System.out.println("\tOccurrences: " + document.getOccurrenceCount());
  
        // Termini trovati in stampa
        if (field.getTerms() != null) {
            for (int k = 0; k < field.getTerms().length; k++) {
                System.out.println("\t\t" + field.getTerms()[k] + "\t - \t" + field.getTermsOccurrences()[k]);
            }
        }
    }
}

Ottieni una licenza API gratuita

Puoi ottenere una licenza temporanea gratuita per utilizzare l’API senza i limiti di valutazione.

Conclusione

Per riassumere, abbiamo discusso su come cercare qualsiasi parola insieme al suo sinonimo in più documenti utilizzando Java. Ancora più importante, ora puoi provare a sviluppare la tua app Java per la ricerca proprio come GroupDocs.Search App.

Ulteriori informazioni sull’API Java Search Automation dalla documentazione. Per provare le funzionalità, prova esempi dal repository GitHub. Sentiti libero di contattarci per qualsiasi domanda tramite il forum.

Guarda anche