Pencarian Fuzzy menggunakan C# .NET
  • 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.

.NET API untuk Pencarian dalam File dan Folder

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.


Lihat juga