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][8]. 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][9], o semplicemente ottenere l’ultimo repository e le configurazioni delle dipendenze per il pox.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][10].
  • Aggiungi la cartella dei documenti all’indice.
  • Abilita la ricerca dei sinonimi usando [SearchOptions][11].
  • Chiama il metodo [search][12] della classe Index e passa la query con le opzioni di ricerca.
  • Stampa il riepilogo utilizzando le proprietà della classe [SearchResult][13] 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][14].
  • Attraversa il risultato della ricerca per lavorare con ogni [FoundDocument][15].
  • Stampa le rispettive proprietà di ogni FoundDocument.
  • Ora, estrai e poi attraversa il [FoundDocumentField][16] 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][17] 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][18].

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

Guarda anche

  • [Trova sinonimi di parole usando Java][22]
  • [Costruisci la tua soluzione di ricerca di testo completo in Java][23]
  • [Trova e sostituisci parole nei documenti usando Java][24]
  • [Trova e rimuovi filigrane dai documenti in Java][25]

[8]: https://products.groupdocs.com/search/java/) [9]: https://downloads.groupdocs.com/search [10]: https://apireference.groupdocs.com/search/java/com.groupdocs.search/Index [11]: https://apireference.groupdocs.com/search/java/com.groupdocs.search.options/SearchOptions [12]: https://apireference.groupdocs.com/search/java/com.groupdocs.search/Index#search(com.groupdocs.search.SearchQuery,%20com.groupdocs.search.options.SearchOptions) [13]: https://apireference.groupdocs.com/search/java/com.groupdocs.search.results/SearchResult [14]: https://apireference.groupdocs.com/search/java/com.groupdocs.search.results/SearchResult [15]: https://apireference.groupdocs.com/search/java/com.groupdocs.search.results/FoundDocument [16]: https://apireference.groupdocs.com/search/java/com.groupdocs.search.results/FoundDocumentField [17]: https://purchase.groupdocs.com/temporary-license [18]: https://products.groupdocs.app/search/total [19]: https://docs.groupdocs.com/search/java/ [20]: https://github.com/groupdocs-search [21]: https://forum.groupdocs.com/ [22]: https://blog.groupdocs.com/it/2021/09/30/find-synonyms-of-words-using-java/ [23]: https://blog.groupdocs.com/it/2021/08/07/build-full-text-search-solution-in-java/ [24]: https://blog.groupdocs.com/it/2022/02/04/find-and-replace-text-in-word-documents-using-java/ [25]: https://blog.groupdocs.com/it/2020/11/30/find-and-remove-watermarks-from-documents-in-java/