Di artikel lain, kita telah melihat apa itu sinonim, dan cara mendapatkan semua sinonim dari kata apa pun. Bagaimana dengan menemukan sinonim ini dalam dokumen yang berbeda? Artikel ini akan memandu Anda tentang cara mencari sinonim dari kueri tertentu (kata) dalam banyak file menggunakan C#.

Topik-topik berikut akan dibahas di bawah ini:

.NET API untuk Mencari Sinonim di Banyak File

GroupDocs.Search menyediakan .NET API yang memungkinkan pencarian kata apa pun dan sinonimnya di banyak file dari folder yang ditentukan. Saya akan menggunakan API ini dalam contoh yang ditampilkan di artikel ini. Hal ini memungkinkan Anda untuk mencari daftar besar format dokumen. Seiring dengan menemukan sinonim, GroupDocs.Search for .NET juga mendukung beberapa teknik pencarian lainnya yang meliputi:

  • Pencarian Fuzzy
  • Pencarian Peka Huruf Besar
  • Pencarian Homofon
  • Pencarian Ekspresi Reguler
  • Pencarian Kartu Liar

Anda dapat mengunduh penginstal DLL atau MSI dari bagian unduhan atau menginstal API di aplikasi .NET Anda melalui NuGet.

PM> Install-Package GroupDocs.Search

Temukan Sinonim di Banyak File menggunakan C#

Langkah-langkah menunjukkan cara mencari sinonim (kata-kata dengan arti serupa) dalam file di dalam folder menggunakan C#.

  • Tentukan permintaan pencarian, folder indeks, dan folder dokumen.
  • Buat indeks dengan Folder indeks yang ditentukan menggunakan kelas Indeks.
  • Tambahkan folder dokumen ke indeks.
  • Buat SearchOptions dan setel UseSynonymSearch ke true.
  • Panggil metode Search dari kelas Index dan teruskan kueri dan opsi pencarian.
  • Untuk mencetak ringkasan, gunakan properti SearchResult yang diambil kembali.

Kode sumber menunjukkan cara menemukan semua sinonim di dalam semua file folder menggunakan C#

// Cari sinonim dalam beberapa file dan folder menggunakan C#
string query = "make";
string indexFolder = @"path\indexFolder";
string documentsFolder = @"path\documentsFolder";

// Membuat indeks di folder yang ditentukan
Index index = new Index(indexFolder);
index.Add(documentsFolder);

// Membuat objek opsi pencarian
SearchOptions options = new SearchOptions();
options.UseSynonymSearch = true; // Enabling Synonym Search

// Cari kata 'make'
// Selain kata 'make', sinonim "do, cause, get,..." juga akan dicari
SearchResult result = index.Search(query, options);
Console.WriteLine("Query: " + query);
Console.WriteLine("Documents: " + result.DocumentCount);
Console.WriteLine("Occurrences: " + result.OccurrenceCount);
Query: **make**
Documents: 2
Occurrences: 22

Langkah-langkah berikut mencetak hasil secara detail setelah mendapatkan semua sinonim dan jumlah kemunculannya di setiap dokumen.

  • Lintasi hasil pencarian yang diambil menggunakan kode di atas.
  • Dapatkan setiap FoundDocument menggunakan metode GetFoundDocument.
  • Cetak properti respektif dari setiap FoundDocument.
  • Telusuri FoundFields di dalam setiap FoundDocument untuk mendapatkan Found Document Field.
  • Dari setiap FoundDocumentField, Anda bisa mendapatkan syarat dan kemunculannya dihitung dalam setiap dokumen.

Kode sumber berikut mencetak hasil pencarian sinonim bersama dengan jumlah kemunculan setiap istilah yang dicari menggunakan C#.

// Mencetak hasil Pencarian Sinonim di C#
Console.WriteLine("Query: " + query);
Console.WriteLine("Documents: " + result.DocumentCount);
Console.WriteLine("Total occurrences: " + result.OccurrenceCount + "\n");
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]);
            }
        }
    }
}
Query: **make**
Documents: 2
Total occurrences: 22

Document: C:/documents/sample.docx
Occurrences: 6
    Field: content
    Occurrences: 6
        make             1
        get                 2
        cause            1
        do                  2
Document: C:/documents/sample.txt
Occurrences: 16
    Field: content
    Occurrences: 16
        get                  4
        cause             1
        do                  11

Cari Sinonim dan Hasil Cetak menggunakan C# - Kode Lengkap

Berikut adalah kode sumber lengkap yang pertama kali menemukan semua sinonim sesuai dengan kueri yang disediakan, lalu mencetak semua kemunculan semua sinonim di setiap dokumen dalam folder tersebut menggunakan C#.

// Cari Sinonim dalam beberapa file dan folder dan Cetak hasilnya menggunakan C#
string query = "make";
string indexFolder = @"path\indexFolder";
string documentsFolder = @"path\documentsFolder";

// Membuat indeks di folder yang ditentukan
Index index = new Index(indexFolder);
// Mengindeks dokumen dari folder yang ditentukan
index.Add(documentsFolder);

// Membuat objek opsi pencarian
SearchOptions options = new SearchOptions();
options.UseSynonymSearch = true; // Enabling synonym search

// Cari kata 'make'
// Selain kata 'make', kata 'do, cause, get,...' juga akan dicari
SearchResult result = index.Search(query, options);

// Mencetak hasilnya
Console.WriteLine("Query: " + query);
Console.WriteLine("Documents: " + result.DocumentCount);
Console.WriteLine("Total occurrences: " + result.OccurrenceCount + "\n");
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]);
            }
        }
    }
}

Kesimpulan

Sebagai kesimpulan, Anda telah belajar bagaimana menemukan kata-kata tertentu dan juga sinonimnya di banyak dokumen dalam folder tertentu menggunakan C#. Anda dapat mencoba mengembangkan aplikasi .NET Anda sendiri untuk mencari kata apa pun dan sinonimnya dalam banyak file.

Pelajari lebih lanjut tentang .NET Search Automation API dari dokumentasi. Untuk merasakan fitur-fiturnya, Anda dapat melihat contoh di repositori GitHub. Hubungi kami untuk pertanyaan apa pun melalui forum.

Lihat juga