- Anda tidak tahu warna atau ejaan warna apa yang digunakan dalam dokumen.
- Mencari “John”, tapi bisa saja dieja sebagai “Jon” atau mungkin “Jhon”.
- Menemukan “USA” ketika pengguna memasukkan “USA”.
- Kata atau frase yang dicari mungkin ada “kesalahan”, oops lagi-lagi “kesalahan”.
Inilah Pencarian Fuzzy. Penelusuran fuzzy memungkinkan Anda menemukan perkiraan kecocokan, bukan pencocokan tepat, sehingga memungkinkan fleksibilitas dalam kueri penelusuran. Hal ini sangat berguna dalam skenario dengan kesalahan ketik, salah ejaan, atau variasi data. Artikel ini menunjukkan cara melakukan pencarian fuzzy secara terprogram di beberapa dokumen di seluruh folder menggunakan C#.
C# Perpustakaan Pencarian Fuzzy
Untuk Pencarian Fuzzy, kami akan menggunakan API GroupDocs.Search for .NET. Hal ini memungkinkan adanya toleransi pada tingkat tertentu dalam ejaan, sehingga efektif dalam mengakomodasi variasi bahasa daerah seperti antara bahasa Inggris British dan Amerika.
Pustaka ini memberdayakan kita untuk mencari teks secara terprogram dalam berbagai format file, seperti dokumen Word (DOC, DOCX), spreadsheet (XLS, XLSX), presentasi (PPT, PPTX), file PDF, Markup (HTML, XML), Penurunan harga (MD), eBuku (EPUB, CHM, FB2), pesan email (MSG, EML), dokumen OneNote, dan arsip ZIP.
Untuk mengetahui semua jenis file yang dapat Anda kerjakan, lihat dokumentasi.
Anda dapat memilih untuk mendapatkan DLL atau penginstal MSI dari bagian unduhan atau menambahkan API ke program .NET Anda menggunakan NuGet.
Mari Pencarian Fuzzy di File menggunakan C#
Ikuti langkah-langkah berikut untuk melakukan pencarian fuzzy di beberapa file dengan berbagai format file dalam folder menggunakan C#:
- Buat Indeks dengan menyediakan jalur folder.
- Tambahkan jalur folder induk untuk direktori pencarian ke indeks yang dibuat.
- Tentukan permintaan pencarian.
- Aktifkan Pencarian Fuzzy dengan mengaktifkan opsi.
- Atur Tingkat Kesamaan pada Algoritma Fuzzy sesuai kebutuhan.
- Jalankan pencarian menggunakan metode Pencarian untuk mendapatkan hasil pencarian.
- Sekarang, Anda dapat mengulangi SearchResults untuk membuat atau mencetak output sesuai keinginan Anda.
Pencarian fuzzy dalam kode C# yang disebutkan di bawah menemukan perkiraan kecocokan dari kueri yang diberikan di semua file di semua sub folder dengan toleransi kesalahan 20% dalam ejaan.
// Pencarian Fuzzy banyak file di beberapa folder menggunakan C#
// Membuat folder indeks dan menambahkan folder dokumen ke dalamnya
Index index = new Index("indexing-folder-path");
index.Add("path/parent-folder");
SearchOptions options = new SearchOptions();
options.FuzzySearch.Enabled = true; // Enabling the fuzzy search
options.FuzzySearch.FuzzyAlgorithm = new SimilarityLevel(0.8);
string query = "nulla"; // search approximate matches of the provided query
SearchResult result = index.Search(query, options);
Di sini, tingkat kesamaan diatur ke 0,8 yaitu 80% kecocokan yang sesuai dengan toleransi kesalahan 20%. Anda dapat mengatur tingkat toleransi dengan mengubah tingkat kemiripan pada kode.
Di bawah ini adalah hasil pencarian fuzzy yang dapat Anda peroleh dari kode di atas. Ini cukup sederhana, namun kode pencetakannya juga tersedia nanti di artikel ini.
Query: nulla
Documents: 2
Occurrences: 135
Document: Lorem ipsum.docx
Occurrences: 132
Field: content
Occurrences: 132
nulla 98
nullam 34
Document: EnglishText.txt
Occurrences: 3
Field: content
Occurrences: 3
dull 1
full 1
fully 1
Mencetak Hasil Pencarian
Kode C# berikut menyediakan dua cara untuk menyajikan hasil pencarian Anda.
- Sorot semua perkiraan kecocokan.
- Cetak hasilnya dalam format yang mudah dibaca dan dianalisis
// Sorot dan Cetak Hasil Pencarian untuk semua dokumen menggunakan C#
for (int i = 0; i < result.DocumentCount; i++)
{
FoundDocument document = result.GetFoundDocument(i);
OutputAdapter outputAdapter = new FileOutputAdapter(OutputFormat.Html, indexFolder + "/Highlight" + i + ".html");
Highlighter highlighter = new DocumentHighlighter(outputAdapter);
index.Highlight(document, highlighter);
Console.WriteLine("\tDocument: " + document.DocumentInfo.FilePath);
Console.WriteLine("\tOccurrences: " + document.OccurrenceCount);
for (int j = 0; j < document.FoundFields.Length; j++)
{
FoundDocumentField field = document.FoundFields[j];
Console.WriteLine("\t\tField: " + field.FieldName);
Console.WriteLine("\t\tOccurrences: " + document.OccurrenceCount);
// Mencetak istilah yang ditemukan
if (field.Terms != null)
{
for (int k = 0; k < field.Terms.Length; k++)
{
Console.WriteLine("\t\t\t" + field.Terms[k].PadRight(20) + field.TermsOccurrences[k]);
}
}
}
Console.WriteLine("===========================================");
}
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
Dalam artikel ini, kita melihat pendekatan terprogram C# terhadap keajaiban pencarian Fuzzy untuk menemukan semua perkiraan kata yang cocok tetapi dengan tingkat toleransi kesalahan tertentu. Fitur ini menjadikan pencarian fuzzy efektif dalam mengakomodasi variasi bahasa daerah seperti antara bahasa Inggris British dan Amerika, kesalahan ketik dalam teks, variasi nama, dan pencocokan fonetik.
Untuk rincian lengkap tentang API, pembaca disarankan untuk merujuk ke dokumentasi.
Setiap pertanyaan atau diskusi tambahan dapat diarahkan ke forum.