Pencarian teks lengkap dokumen

Kami sering membutuhkan API pencarian teks lengkap yang memungkinkan aplikasi kami mencari melalui dokumen untuk informasi tertentu yang ditentukan sebagai permintaan pencarian tekstual. Dokumen dapat dalam format apa pun seperti Word (Doc, Docx), PDF, HTML, EPUB, Spreadsheet (XLS, XLSX), Presentasi (PPT, PPTX), gambar, dan video.

GroupDocs.Search adalah API pencarian teks lengkap yang canggih yang memungkinkan Anda mencari melalui lebih dari 70 format dokumen di aplikasi Anda. Untuk memungkinkan pencarian secara instan di ribuan dokumen, mereka harus ditambahkan ke indeks.

Mengapa Menggunakan GroupDocs.Search sebagai Pengembang?

  • Tidak diperlukan perangkat lunak tambahan untuk mencari dokumen dengan format yang didukung.
  • Berbagai pilihan pengindeksan dan pencarian disediakan untuk memenuhi persyaratan apa pun.
  • Berbagai pilihan jenis pencarian tersedia dalam kueri bentuk teks atau objek.
  • Performa pengindeksan dan pencarian yang tinggi dicapai dengan algoritme unik dan struktur data, pengoptimalan, dan eksekusi multi-utas.
  • Berbagai cara memvisualisasikan hasil pencarian dalam teks dokumen didukung.

Silakan periksa artikel Tentang Mesin Pencari untuk mengetahui tempat apa yang ditempati GroupDocs.Search API dalam klasifikasi mesin pencari.

Instalasi

GroupDocs.Search for .NET dihosting di NuGet dan dapat diinstal dengan mudah menggunakan NuGet Package Manager. Sebagai alternatif, Anda dapat mengunduh DLL API dari bagian Unduhan.

Cari Melalui Dokumen Office menggunakan C#

Langkah-langkah berikut menjelaskan cara mencari kata atau frasa dalam beberapa dokumen (Word, Excel, PDF, dan format dokumen lainnya).

  • Buat indeks baru: Pertama-tama, Anda perlu membuat indeks. Indeks dapat dibuat di memori atau di disk. Indeks yang dibuat di memori tidak dapat disimpan setelah keluar dari program Anda. Sebaliknya, indeks yang dibuat pada disk dapat dimuat di masa mendatang untuk terus bekerja. Detail tentang pembuatan indeks dijelaskan di bagian Membuat indeks.
  • Berlangganan ke acara indeks: Setelah membuat indeks, Anda perlu menambahkan dokumen ke indeks untuk pengindeksan. Pengindeksan dokumen dapat berhasil atau tidak berhasil karena berbagai alasan, misalnya karena kesalahan baca dari disk atau adanya kata sandi untuk mengakses dokumen. Untuk menerima informasi tentang kesalahan pengindeksan, Anda dapat berlangganan ke acara ErrorOccurred. Untuk bekerja dengan acara, lihat bagian Mencari acara indeks.
  • Dokumen Indeks: Pengindeksan dokumen dapat dilakukan secara sinkron atau asinkron. Pengindeksan sinkron berarti bahwa utas yang memulai proses pengindeksan akan sibuk hingga operasi selesai. Namun, lebih sering, pengindeksan perlu dilakukan secara asinkron, dengan kemampuan untuk menjalankan tugas lain di utas yang meluncurkan operasi. Penjelasan rinci tentang semua aspek proses pengindeksan tersedia di bagian Pengindeksan.
  • Lakukan pencarian: Saat dokumen diindeks, indeks siap untuk menangani permintaan pencarian. Jenis kueri penelusuran berikut didukung: sederhana, fuzzy, peka huruf besar-kecil, boolean, phrasal, faceted, dengan wildcard, dan lainnya. Deskripsi permintaan pencarian dari berbagai jenis disajikan di bagian Searching.
  • Gunakan hasil pencarian: Saat pencarian selesai, Anda perlu menginterpretasikan hasilnya. Hasilnya dapat diwakili oleh daftar sederhana dokumen yang ditemukan, atau kata dan frasa yang ditemukan dapat disorot dalam teks dokumen. Untuk informasi selengkapnya tentang memproses hasil penelusuran, lihat Hasil penelusuran.
string indexFolder = @"/Users/muhammadsohailismail/MyIndex/"; // Specify the path to the index folder
string documentsFolder = @"/Users/muhammadsohailismail/MyDocuments/"; // Specify the path to a folder containing documents to search

// a) Create new index or
// b) Open existing index
Index index = new Index(indexFolder);

// c) Subscribe to index events
index.Events.ErrorOccurred += (sender, args) =>
{
    Console.WriteLine(args.Message); // Writing error messages to the console
};

// d) Add files synchronously
index.Add(documentsFolder); // Synchronous indexing documents from the specified folder

// f) Perform search
string query = "Worthy"; // Specify a search query
SearchResult result = index.Search(query); // Searching in the index

// g) Use search results
// Printing the result
Console.WriteLine("Documents found: " + result.DocumentCount);
Console.WriteLine("Total occurrences found: " + result.OccurrenceCount);
for (int i = 0; i < result.DocumentCount; i++)
{
    FoundDocument document = result.GetFoundDocument(i);
    Console.WriteLine("\\tDocument: " + document.DocumentInfo.FilePath);
    Console.WriteLine("\\tOccurrences: " + document.OccurrenceCount);
}

// Highlight occurrences in text
if (result.DocumentCount > 0)
{
    FoundDocument document = result.GetFoundDocument(0); // Getting the first found document
    string path = @"/Users/muhammadsohailismail/Output/Highlighted.html";
    OutputAdapter outputAdapter = new FileOutputAdapter(path); // Creating the output adapter to a file
    HtmlHighlighter highlighter = new HtmlHighlighter(outputAdapter); // Creating the highlighter object
    index.Highlight(document, highlighter); // Generating output HTML formatted document with highlighted search results

    Console.WriteLine();
    Console.WriteLine("Generated HTML file can be opened with Internet browser.");
    Console.WriteLine("The file can be found by the following path:");
    Console.WriteLine(Path.GetFullPath(path));
}

Kode di atas menghasilkan output berikut dan file HTML.

Cari di Fields of Documents menggunakan C#

Pencarian segi memfilter hasil pencarian dengan menyetel nama bidang dokumen yang valid untuk pencarian. Pencarian berwajah memungkinkan Anda untuk mencari hanya di bidang dokumen tertentu, misalnya, hanya di bidang konten atau di bidang nama file. Contoh pencarian segi sederhana disajikan di bawah ini dengan kueri dalam bentuk teks dan objek.

string indexFolder = @"c:\\MyIndex\\";
string documentsFolder = @"c:\\MyDocuments\\";
 
// Creating an index in the specified folder
Index index = new Index(indexFolder);
 
// Indexing documents from the specified folder
index.Add(documentsFolder);
 
// Search in the content field with text query
SearchResult result1 = index.Search("content: Einstein");
 
// Search in the content field with object query
SearchQuery wordQuery = SearchQuery.CreateWordQuery("Einstein");
SearchQuery fieldQuery = SearchQuery.CreateFieldQuery(CommonFieldNames.Content, wordQuery);
SearchResult result2 = index.Search(fieldQuery);

Menggunakan bidang khusus format

Untuk setiap format dokumen, ada bidang standar yang mungkin ada dalam dokumen jenis ini. Pustaka menyediakan kelas berikut yang berisi konstanta dengan nama bidang dokumen standar: EpubFieldNames, FictionBookFieldNames, MailFieldNames, PresentationFieldNames, SpreadsheetFieldNames , WordsFieldNames.

Ada juga bidang yang mungkin ada dalam dokumen jenis apa pun. Nama bidang tersebut direpresentasikan dalam kelas CommonFieldNames.

Contoh penggunaan nama bidang standar dokumen disajikan dalam contoh berikut.

string indexFolder = @"c:\\MyIndex\\";
string documentsFolder = @"c:\\MyDocuments\\";
 
// Creating an index in the specified folder
Index index = new Index(indexFolder);
 
// Indexing documents from the specified folder
index.Add(documentsFolder);
 
// Search in the content field with text query
string query1 = WordsFieldNames.Company + ": Dycum";
SearchResult result1 = index.Search(query1);
 
// Search in the content field with object query
SearchQuery wordQuery = SearchQuery.CreateWordQuery("Dycum");
SearchQuery fieldQuery = SearchQuery.CreateFieldQuery(WordsFieldNames.Company, wordQuery);
SearchResult result2 = index.Search(fieldQuery);

Informasi detail tentang faceted search disajikan pada halaman Faceted search.

Kesimpulan

Artikel ini telah menjelaskan cara mencari melalui dokumen (DOCX, PDF, Excel, file Teks) untuk informasi tertentu di C#. Dijelaskan juga cara mencari di field dokumen. GroupDocs.Search berisi beberapa fitur lain, silakan periksa dokumentasi untuk mempelajarinya lebih lanjut.