La ricerca full-text è un modo per cercare un testo/una query all’interno di una raccolta di documenti. Questo approccio trova rapidamente tutte le istanze di un termine/frase e funziona utilizzando indici di testo. In questo articolo impareremo come cercare a livello di codice il testo completo nei documenti usando Java.

Ricerca a tutto testo

Successivamente, puoi implementare varie tecniche di ricerca e creare la tua soluzione di ricerca per documenti di elaborazione testi, fogli di calcolo, presentazioni, file HTML, file PDF, eBook, messaggi di posta elettronica, archivi ZIP e molti altri formati di documento.

Di seguito vengono trattati i seguenti argomenti:

API Java per la ricerca di testo completo

GroupDocs.Search fornisce una API Java per la ricerca full-text che può essere integrata in qualsiasi applicazione senza alcuna dipendenza da strumenti e software di terze parti. Ti consente di cercare in un ampio elenco di formati di documenti. Alcune delle tecniche di ricerca che possono essere eseguite utilizzando l’API sono le seguenti:

  • Ricerca case sensitive
  • Ricerca di espressioni regolari
  • Ricerca sfaccettata
  • Ricerca sfocata
  • Ricerca omofonica
  • 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 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.3</version> 
</dependency>

Sono disponibili due passaggi per eseguire la ricerca all’interno dei file archiviati in una cartella.

  • Indicizzazione
  • Esegui la ricerca

Indicizzare i file utilizzando Java

Un indice possiede il testo scansionato di tutti i documenti. Pertanto, quando si esegue un’operazione di ricerca, viene fatto riferimento solo all’indice, anziché al testo dei documenti originali. Per rendere possibile la ricerca istantanea tra migliaia di documenti con formati file uguali o diversi, è necessario creare un indice e aggiungervi questi documenti. Quando i documenti vengono indicizzati, l’indice è pronto per gestire le query di ricerca.

Le seguenti due semplici righe creano un indice e aggiungono anche la cartella dei documenti all’indice.

Index index = new Index("indexingFolderPath");
index.add("documentsFolderPath");

Dopo aver indicizzato più documenti dello stesso formato o di formati diversi come (Word, PDF, Excel e HTML), possiamo procedere con l’elaborazione di una specifica query di ricerca (termine di ricerca “Disegna”) su di essi. Di seguito sono riportati i passaggi per eseguire la ricerca di testo su più documenti all’interno di una cartella utilizzando Java:

  • Specificare la cartella di origine dei documenti e la cartella dell’indice.
  • Crea Indice usando la cartella dell’indice.
  • Aggiungi la cartella di origine all’indice.
  • Preparare la stringa di query.
  • Esegui una ricerca usando il metodo search della classe Index.
  • Attraversa ogni risultato di ricerca per le proprietà di ogni documento.

Il seguente codice sorgente esegue la ricerca di testo in Java su tutti i documenti della cartella fornita.

// Cerca il testo specificato in più documenti PDF, Word, Excel, HTML in una cartella utilizzando Java
Index index = new Index("path/indexingFolder");
index.add("path/documentsFolderPath");

// Ricerca nell'indice del testo specificato
SearchResult result = index.search("Draw");

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

Otterremo il percorso del documento e il numero di occorrenze dei termini di ricerca in tutti i documenti con quella cartella specificata. Ecco lo screenshot per la visualizzazione.

Output di testo di ricerca completa

Evidenzia i risultati della ricerca di testo in Java

Ora eseguiamo la stessa ricerca full-text ed evidenziamo anche tutte le occorrenze che corrispondono alla tua query.

I seguenti passaggi mostrano come evidenziare i risultati della ricerca di testo:

  • Crea Indice e aggiungi la cartella dei documenti all’indice.
  • Preparare la stringa di query.
  • Cerca nella cartella dei documenti usando il metodo cerca.
  • Mentre attraversi i risultati, crea l’evidenziatore usando HtmlHighlighter.
  • Utilizzare il metodo di evidenziazione per evidenziare i risultati della ricerca.

Il codice seguente genera l’output HTML con i risultati di ricerca evidenziati utilizzando Java.

// Evidenzia i risultati della ricerca full-text di più documenti in una cartella in Java
Index index = new Index("path/indexingFolder");
index.add("path/documentsFolderPath"); // Synchronous indexing documents from the specified folder

String query = "draw"; // Specify a search query
SearchResult result = index.search(query); // Searching in the index

for (int i = 0; i < result.getDocumentCount(); i++) 
{
    FoundDocument document = result.getFoundDocument(i);

    String path = "path/Highlighted-"+ i +".html";
    OutputAdapter outputAdapter = new FileOutputAdapter(path); 
    HtmlHighlighter highlighter = new HtmlHighlighter(outputAdapter); // Creating the highlighter
    index.highlight(document, highlighter); // Generates HTML formatted output document with highlighted search results
}

Come output, otterremo più file HTML. Ciascun file mostrerà il contenuto di un documento separato (es. excel.xlsx, source.docx, target.docx) con termini/parole di ricerca evidenziati. Di seguito è riportato l’output HTML evidenziato di un file DOCX, file TXT e file PDF ottenuti utilizzando il codice sopra.

Evidenzia i risultati della ricerca full-text nel contenuto utilizzando Java

Ottieni una licenza API gratuita

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

Conclusione

In questo articolo, abbiamo imparato a cercare testo all’interno di più documenti di una cartella in Java. Inoltre, abbiamo discusso su come evidenziare a livello di codice il testo dei risultati di ricerca in formato HTML per file MS Word, file TXT e file PDF utilizzando GroupDocs.Search for Java.

Puoi saperne di più sull’API utilizzando la documentazione. Molti altri esempi sono disponibili su GitHub. Per domande, contattaci tramite il forum.

Guarda anche