Pernahkah Anda bertanya-tanya bagaimana cara mencari banyak file dengan mudah atau menghadapi tantangan mencari di dalam file di folder yang berbeda? Artikel ini memiliki jawaban yang Anda cari. Mari selami dunia pencarian teks dan jelajahi cara mencari berbagai teks atau frasa dalam file berbeda di berbagai folder menggunakan C#.

C# API untuk Memindai Teks di Seluruh File dan Folder

Sekarang, kita akan menggunakan API GroupDocs.Search for .NET untuk menjelajahi banyak teks dalam file dengan format beragam di seluruh folder. Perpustakaan ini memberdayakan kita untuk memindai teks secara sistematis dalam berbagai format file, seperti dokumen Word, spreadsheet, presentasi, file PDF, file Markup, eBook, pesan email, dokumen One Note, dan arsip ZIP. Untuk daftar mendalam tentang format file yang didukung, lihat dokumentasi komprehensif.

Anda memiliki opsi untuk mengambil DLL atau penginstal MSI dari bagian unduhan, atau Anda dapat menginstal API ke aplikasi .NET Anda menggunakan NuGet.

PM> Install-Package GroupDocs.Search

Mencari Banyak Teks dalam File di Seluruh Folder menggunakan C#

Ikuti langkah-langkah ini untuk melakukan pencarian teks di beberapa file dalam beberapa folder menggunakan C# 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 Tambah.
  • Tentukan kueri penelusuran dengan beberapa istilah atau frasa.
  • Jalankan pemindaian teks menggunakan metode Pencarian dan simpan hasilnya.
  • Ulangi hasil pencarian:
    • Ambil setiap dokumen yang ditemukan menggunakan metode GetFoundDocument.
    • Ambil atau cetak informasi file apa pun untuk dokumen yang ditemukan.
    • Siapkan OutputAdapter untuk format dan jalur yang diinginkan.
    • Buat Highlighter untuk dokumen.
    • Sorot dan keluaran hasil pencarian ke file HTML menggunakan metode Sorotan.
// Pencarian Teks di Banyak file dari berbagai format file dalam Banyak Folder menggunakan C#

// Membuat indeks dan mengindeks dokumen dari folder yang ditentukan
Index index = new Index("path/for/indexingFolder");
index.Add("path/parent-folder/");

// Telusuri dokumen yang mengandung kata 'air' atau 'non' atau frasa 'Lorem ipsum'
string query = "water OR \"Lorem ipsum\" OR non";
SearchResult result = index.Search(query);

// Mencetak hasilnya
Console.WriteLine("Documents: " + result.DocumentCount);
Console.WriteLine("Total occurrences: " + result.OccurrenceCount);
for (int i = 0; i < result.DocumentCount; i++)
{
    FoundDocument document = result.GetFoundDocument(i);

    // Sorot hasil pencarian
    OutputAdapter outputAdapter = new FileOutputAdapter(OutputFormat.Html, "/path/Highlighted-" + i + ".html");
    Highlighter highlighter = new DocumentHighlighter(outputAdapter);
    index.Highlight(document, highlighter); // Generating HTML formatted text with highlighted occurrences
}

Kode di atas memungkinkan Anda mencari teks tertentu dalam beberapa file dan membuat 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 hasilnya
Console.WriteLine("Documents: " + result.DocumentCount);
Console.WriteLine("Total occurrences: " + result.OccurrenceCount);
for (int i = 0; i < result.DocumentCount; i++)
{
    FoundDocument document = result.GetFoundDocument(i);

    Console.WriteLine("Document: " + document.DocumentInfo.FilePath);
    Console.WriteLine("Occurrences: " + document.OccurrenceCount);
    for (int j = 0; j < document.FoundFields.Length; j++)
    {
        FoundDocumentField field = document.FoundFields[j];
        Console.WriteLine("\tField: " + field.FieldName);
        Console.WriteLine("\tOccurrences: " + document.OccurrenceCount);

        // Mencetak istilah yang ditemukan
        if (field.Terms != null)
        {
            for (int k = 0; k < field.Terms.Length; k++)
            {
                Console.WriteLine("\t\t" + field.Terms[k].PadRight(20) + field.TermsOccurrences[k]);
            }
        }
        // Mencetak frasa yang ditemukan
        if (field.TermSequences != null)
        {
            for (int k = 0; k < field.TermSequences.Length; k++)
            {
                string sequence = string.Join(" ", field.TermSequences[k]);
                Console.WriteLine("\t\t" + sequence.PadRight(30) + field.TermSequencesOccurrences[k]);
            }
        }
    }
}

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

Documents: 3
Total occurrences: 141
	Document: Lorem ipsum.docx
	Occurrences: 101
		Field: filename
		Occurrences: 101
			lorem ipsum		1
		Field: content
		Occurrences: 101
			non			94
			lorem ipsum		6
	Document: Lorem ipsum.pdf
	Occurrences: 1
		Field: filename
		Occurrences: 1
			lorem ipsum		1
	Document: English.txt
	Occurrences: 39
		Field: content
		Occurrences: 39
			water			39

Kode lengkap

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

// Pencarian Teks di Banyak file dari berbagai format file dalam Banyak Folder menggunakan C#

// Membuat indeks dan mengindeks dokumen dari folder yang ditentukan
Index index = new Index("path/for/indexingFolder");
index.Add("path/parent-folder/");

// Telusuri dokumen yang mengandung kata 'air' atau 'non' atau frasa 'Lorem ipsum'
string query = "water OR \"Lorem ipsum\" OR non";
SearchResult result = index.Search(query);

// Mencetak hasilnya
Console.WriteLine("Documents: " + result.DocumentCount);
Console.WriteLine("Total occurrences: " + result.OccurrenceCount);
for (int i = 0; i < result.DocumentCount; i++)
{
    FoundDocument document = result.GetFoundDocument(i);

    // Sorot hasil pencarian
    OutputAdapter outputAdapter = new FileOutputAdapter(OutputFormat.Html, "/path/Highlighted-" + i + ".html");
    Highlighter highlighter = new DocumentHighlighter(outputAdapter);
    index.Highlight(document, highlighter); // Generating HTML formatted text with highlighted occurrences

    Console.WriteLine("Document: " + document.DocumentInfo.FilePath);
    Console.WriteLine("Occurrences: " + document.OccurrenceCount);
    for (int j = 0; j < document.FoundFields.Length; j++)
    {
        FoundDocumentField field = document.FoundFields[j];
        Console.WriteLine("\tField: " + field.FieldName);
        Console.WriteLine("\tOccurrences: " + document.OccurrenceCount);

        // Mencetak istilah yang ditemukan
        if (field.Terms != null)
        {
            for (int k = 0; k < field.Terms.Length; k++)
            {
                Console.WriteLine("\t\t" + field.Terms[k].PadRight(20) + field.TermsOccurrences[k]);
            }
        }
        // Mencetak frasa yang ditemukan
        if (field.TermSequences != null)
        {
            for (int k = 0; k < field.TermSequences.Length; k++)
            {
                string sequence = string.Join(" ", field.TermSequences[k]);
                Console.WriteLine("\t\t" + sequence.PadRight(30) + field.TermSequencesOccurrences[k]);
            }
        }
    }
}

Mendapatkan Lisensi Gratis atau Uji Coba Gratis

Lisensi gratis

Dapatkan lisensi sementara gratis untuk menjelajahi perpustakaan ini tanpa batasan.

Uji Coba Gratis

Anda dapat mengunduh uji coba gratis dari bagian unduhan.

.NET API untuk Pencarian dalam File dan Folder

Kesimpulan

Pada artikel ini, kami telah menyelidiki pemindaian teks untuk mencari berbagai teks dalam banyak file di beberapa folder menggunakan C#. Dimulai dengan permintaan pencarian, kami menjelajahi beberapa file dan folder, menyorot kata atau frasa yang dicari di masing-masing file HTML.

Untuk rincian lengkap tentang API, pembaca disarankan untuk merujuk ke dokumentasi.

Setiap pertanyaan atau diskusi tambahan dapat diarahkan ke forum yang tersedia.

Lihat juga