Pernah bertanya-tanya bagaimana cara menelusuri banyak file dengan lancar, atau mungkin menavigasi kerumitan pencarian dalam file di banyak folder? Semua pertanyaan Anda menemukan jawabannya di sini. Artikel ini mendalami bidang pemindaian teks, menampilkan cara mencari banyak teks atau frasa dalam berbagai file yang tersebar di berbagai folder menggunakan Java.

Java API untuk Memindai Teks di Seluruh File dan Folder

Hari ini, kita akan menggunakan API GroupDocs.Search for Java untuk mencari banyak teks dalam file dengan berbagai format file di seluruh folder. Pustaka ini memungkinkan kita memindai teks secara terprogram dalam berbagai format file untuk dokumen Word, spreadsheet, presentasi, file PDF, file Markup, eBook, pesan email, dokumen One Note, dan arsip ZIP. Dokumentasi menyediakan daftar detail format file yang didukung.

Anda dapat mengunduh file JAR dari bagian unduhan atau menggunakan repositori terbaru dan konfigurasi ketergantungan Maven dalam aplikasi Java Anda.

Mencari Banyak Teks dalam File di Seluruh Folder menggunakan Java

Ikuti langkah-langkah berikut untuk melakukan pencarian teks di banyak file dalam beberapa folder menggunakan Java dan menghasilkan file output HTML yang disorot untuk setiap dokumen yang ditemukan.

  • Buat objek Indeks dengan jalur folder indeks yang ditentukan.
  • Indeks folder dokumen induk menggunakan metode add.
  • Tentukan kueri penelusuran dengan beberapa istilah atau frasa.
  • Jalankan pemindaian teks menggunakan metode pencarian dan simpan hasilnya.
  • Ulangi hasil pencarian:
    • Akses setiap dokumen yang ditemukan menggunakan metode getFoundDocument.
    • Akses atau cetak informasi file apa pun untuk dokumen yang ditemukan.
    • Siapkan OutputAdapter untuk format dan jalur yang diinginkan.
    • Buat Highlighter untuk dokumen.
    • Sorot dan keluarkan hasil pencarian ke file HTML menggunakan metode highlight.
// Pencarian Teks di Banyak file dengan berbagai format file dalam Banyak Folder menggunakan Java

// Membuat indeks di folder yang ditentukan
Index index = new Index("path/for/indexingFolder");

// Mengindeks dokumen dari folder yang ditentukan
index.add("path/parent-folder/");

String query = "water OR \"Lorem ipsum\" OR non";
SearchResult result = index.search(query);

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

    OutputAdapter outputAdapter = new FileOutputAdapter(OutputFormat.Html, "/path/Highlighted-" + i + ".html");
    Highlighter highlighter = new DocumentHighlighter(outputAdapter);
    index.highlight(document, highlighter);
}

Kode di atas secara kolektif memungkinkan Anda mencari teks tertentu dalam beberapa file dan menghasilkan file keluaran HTML yang disorot untuk setiap dokumen yang ditemukan.

Hasil Pencarian Teks yang Disorot dalam format HTML

Mencetak Hasil Pencarian Teks

Dari hasil permintaan pencarian, Anda dapat mengekstrak lebih lanjut informasi tentang dokumen yang ditemukan.

// Mencetak Hasil Pencarian ===

for (int i = 0 ; i < result.getDocumentCount(); i++)
{
    FoundDocument document = result.getFoundDocument(i);
 
    // Mencetak Hasil Pencarian ===========
    System.out.println("Occurrences: " + document.getOccurrenceCount());
    for (FoundDocumentField field : document.getFoundFields()) {
        System.out.println("\tField: " + field.getFieldName());
        System.out.println("\tOccurrences: " + field.getOccurrenceCount());

        // Mencetak istilah yang ditemukan
        if (field.getTerms() != null) {
            for (int k = 0; k < field.getTerms().length; k++) {
                System.out.println("\t\t" + field.getTerms()[k] + " - " + field.getTermsOccurrences()[k]);
            }
        }
        // Mencetak frasa yang ditemukan
        if (field.getTermSequences() != null) {
            for (int k = 0; k < field.getTermSequences().length; k++) {
                String[] terms = field.getTermSequences()[k];
                String sequence = "";
                for (String term : terms) {
                    sequence += term + " ";
                }
                System.out.println("\t\t" + sequence + " - " + field.getTermSequencesOccurrences()[k]);
            }
        }
    }
}

Berikut ini hasil pencetakan hasil pencarian diatas yang diperoleh dari file DOCX, PDF dan TXT:

File Name: Lorem ipsum.docx
Occurrences: 101
	Field: filename
	Occurrences: 1
		lorem ipsum  - 1
	Field: content
	Occurrences: 100
		non - 94
		lorem ipsum  - 6
====================================
File Name: Lorem ipsum.pdf
Occurrences: 60
	Field: filename
	Occurrences: 1
		lorem ipsum  - 1
	Field: content
	Occurrences: 59
		non - 53
		lorem ipsum  - 6
====================================
File Name: English.txt
Occurrences: 39
	Field: content
	Occurrences: 39
		water - 39

Kode lengkap

Berikut adalah kode Java lengkap yang secara kolektif mencari string teks dan frasa di beberapa file dan folder:

// Pencarian Teks di Banyak file dengan berbagai format file dalam Banyak Folder menggunakan Java

// Membuat indeks di folder yang ditentukan
Index index = new Index("path/for/indexingFolder");

// Mengindeks dokumen dari folder yang ditentukan
index.add("path/parent-folder/");

String query = "water OR \"Lorem ipsum\" OR non";
SearchResult result = index.search(query);

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

    OutputAdapter outputAdapter = new FileOutputAdapter(OutputFormat.Html, "/path/Highlighted-" + i + ".html");
    Highlighter highlighter = new DocumentHighlighter(outputAdapter);
    index.highlight(document, highlighter);
  
    // Hasil Pencarian Cetak ===========
    System.out.println("Occurrences: " + document.getOccurrenceCount());
    for (FoundDocumentField field : document.getFoundFields()) {
        System.out.println("\tField: " + field.getFieldName());
        System.out.println("\tOccurrences: " + field.getOccurrenceCount());

        // Mencetak istilah yang ditemukan
        if (field.getTerms() != null) {
            for (int k = 0; k < field.getTerms().length; k++) {
                System.out.println("\t\t" + field.getTerms()[k] + " - " + field.getTermsOccurrences()[k]);
            }
        }
        // Mencetak frasa yang ditemukan
        if (field.getTermSequences() != null) {
            for (int k = 0; k < field.getTermSequences().length; k++) {
                String[] terms = field.getTermSequences()[k];
                String sequence = "";
                for (String term : terms) {
                    sequence += term + " ";
                }
                System.out.println("\t\t" + sequence + " - " + field.getTermSequencesOccurrences()[k]);
            }
        }
    }  
}

Mendapatkan Lisensi Gratis atau Uji Coba Gratis

Lisensi gratis

Untuk menjelajahi perpustakaan ini tanpa kendala, Anda dapat memperoleh lisensi sementara gratis.

Uji Coba Gratis

Unduh uji coba gratis dari bagian unduhan.

Java API untuk Pencarian dalam File dan Folder

Kesimpulan

Pada artikel ini, kami baru saja menjelajahi pemindaian teks untuk mencari banyak teks dalam banyak file di beberapa folder menggunakan Java. Dimulai dengan permintaan pencarian, kami mencari dalam beberapa file dan folder dan menyorot hasil yang ditemukan di masing-masing file HTML.

Untuk informasi API terperinci, pembaca dianjurkan untuk membaca dokumentasi. Pertanyaan dan diskusi lebih lanjut dapat diarahkan ke forum yang telah disediakan.

Lihat juga