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.
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.
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.