Trước khi đi sâu vào chi tiết, chúng ta hãy tìm hiểu tổng quan về kỹ thuật tìm kiếm toàn văn bản. Tìm kiếm toàn văn về cơ bản là một cách nâng cao hơn để tìm kiếm văn bản/truy vấn trên một tập hợp tài liệu. Cách tiếp cận này nhanh chóng tìm thấy tất cả các trường hợp của một thuật ngữ và nó hoạt động bằng cách sử dụng chỉ mục văn bản. Trong bài viết này, chúng ta sẽ tìm hiểu cách lập trình tìm kiếm toàn văn trong tài liệu bằng C#.

Sau này, bạn có thể triển khai các kỹ thuật tìm kiếm khác nhau để tìm kiếm văn bản trong tài liệu soạn thảo văn bản, bảng tính, bản trình bày, tệp HTML, Sách điện tử PDF, thư email, tệp lưu trữ ZIP và nhiều tệp khác.

Một trong những ví dụ về triển khai tìm kiếm toàn văn bản là trong bộ xử lý Word và trình soạn thảo văn bản. Nó giúp bạn tìm một cụm từ hoặc từ ở bất kỳ đâu trong tài liệu.

Tìm kiếm toàn văn

Các chủ đề sau đây được đề cập dưới đây:

.NET API để tìm kiếm văn bản

GroupDocs.Search for .NET là API tìm kiếm phía sau cho phép tìm kiếm toàn văn bản và có thể được tích hợp vào bất kỳ ứng dụng .NET nào mà không cần bất kỳ công cụ bên thứ ba hoặc phần mềm phụ thuộc nào. Nó cho phép bạn tìm kiếm trên vô số định dạng tài liệu trong các ứng dụng của mình.

Bạn có thể tải xuống trình cài đặt DLL hoặc MSI từ phần tải xuống hoặc cài đặt API trong ứng dụng .NET của bạn qua NuGet.

PM> Install-Package GroupDocs.Search

Tìm kiếm toàn văn bằng C#

Có hai bước chính để thực hiện hoặc triển khai tìm kiếm toàn văn.

  • lập chỉ mục
  • Thực hiện tìm kiếm

lập chỉ mục

Để có thể tìm kiếm ngay lập tức trên hàng nghìn tài liệu có định dạng tệp giống hoặc khác nhau, bạn cần tạo một chỉ mục và thêm các tài liệu này vào đó.

Chỉ mục là gì?

Một chỉ mục sở hữu văn bản được quét của tất cả các tài liệu. Do đó, khi bạn thực hiện thao tác tìm kiếm (tìm kiếm một truy vấn cụ thể), chỉ có chỉ mục được tham chiếu chứ không phải văn bản của tài liệu gốc.

Tạo chỉ mục

Một chỉ mục có thể được tạo trong bộ nhớ hoặc trên đĩa. Không thể lưu chỉ mục được tạo trong bộ nhớ sau khi thoát khỏi chương trình của bạn. Ngược lại, một chỉ mục được tạo trên đĩa có thể được tải trong tương lai để tiếp tục hoạt động. Ví dụ sau đây cho thấy cách tạo chỉ mục trên đĩa.

Index index = new Index("indexPath/FolderName/");

Khi tài liệu được lập chỉ mục, chỉ mục đã sẵn sàng để xử lý các truy vấn tìm kiếm. Sau đây là một số kỹ thuật tìm kiếm có thể được thực hiện bằng cách sử dụng GroupDocs.Search for .NET:

  • Tìm kiếm phân biệt chữ hoa chữ thường
  • Tìm kiếm biểu thức chính quy
  • Tìm kiếm cụm từ
  • Tìm kiếm theo khía cạnh
  • Tìm kiếm từ đồng nghĩa
  • Tìm kiếm ký tự đại diện

Thực hiện Tìm kiếm trong C#

Bắt đầu với một trường hợp sử dụng. Nếu chúng tôi có nhiều tài liệu (Word, PDF, Excel và HTML) và chúng tôi muốn thực hiện một truy vấn tìm kiếm cụ thể (thuật ngữ tìm kiếm “video”) trên chúng.

Sau đây là các bước để thực hiện tìm kiếm văn bản trên nhiều tài liệu trong một thư mục:

  • Quyết định thư mục tài liệu nguồn và thư mục chỉ mục.
  • Chuẩn bị chuỗi truy vấn.
  • Tạo Chỉ mục bằng thư mục chỉ mục.
  • Thêm thư mục tài liệu nguồn vào chỉ mục.
  • Thực hiện tìm kiếm bằng lớp Search method Index.
  • Traverse và kết quả tìm kiếm cho từng thuộc tính của tài liệu.

Mã nguồn sau đây thực hiện tìm kiếm văn bản bằng C# trên tất cả tài liệu của thư mục được cung cấp.

// Văn bản truy vấn tìm kiếm trong tất cả các tài liệu của thư mục được cung cấp trong C#
string indexFolder =  @"indexPath/GroupDocs/index/";
string documentsFolder = @"documentPath/GroupDocs/source/";
string query = "video";

// Tạo chỉ mục trong thư mục đã chỉ định và thêm thư mục tài liệu vào Chỉ mục
Index index = new Index(indexFolder);
index.Add(documentsFolder);

// Tìm kiếm trong chỉ mục
SearchResult result = index.Search(query);
Console.WriteLine("Documents found: " + result.DocumentCount);

// Duyệt qua từng tài liệu của Kết quả tìm kiếm
foreach (FoundDocument document in result)
{
    Console.WriteLine("Document Path : " + document.DocumentInfo.FilePath);
    Console.WriteLine("Occurance : " + document.OccurrenceCount);
}

Ta sẽ lấy đường dẫn tài liệu và số lần xuất hiện cụm từ tìm kiếm trong tất cả các tài liệu có trong thư mục tài liệu. Đây là ảnh chụp màn hình để hình dung.

Đầu ra văn bản tìm kiếm đầy đủ

Đánh dấu kết quả tìm kiếm văn bản trong C#

Bây giờ chúng ta hãy thực hiện cùng một tìm kiếm văn bản, nhưng lần này chúng ta sẽ đánh dấu tất cả các lần xuất hiện phù hợp với truy vấn.

Các bước sau đây cho biết cách đánh dấu kết quả tìm kiếm văn bản:

  • Chuẩn bị chuỗi truy vấn.
  • Tạo Chỉ mục bằng đường dẫn thư mục chỉ mục.
  • Thêm thư mục tài liệu nguồn vào chỉ mục.
  • Tìm kiếm thư mục tài liệu bằng phương pháp Tìm kiếm.
  • Trong khi duyệt các kết quả tìm kiếm, hãy tạo Công cụ tô sáng.
  • Sử dụng phương thức Đánh dấu của lớp Chỉ mục để đánh dấu kết quả tìm kiếm.

Đoạn mã sau tạo đầu ra HTML với các kết quả tìm kiếm được đánh dấu bằng C#.

string indexFolder =    @"indexPath/GroupDocs/index/";
string documentFolder = @"documentPath/GroupDocs/source/";
string query = "draw";

// Tạo một chỉ mục trong thư mục được chỉ định và thêm thư mục tài liệu vào Chỉ mục
Index index = new Index(indexFolder);
index.Add(documentFolder);

// Tìm kiếm từ truy vấn
SearchResult result = index.Search(query);

// Đánh dấu tất cả các lần xuất hiện trong văn bản
for (int i = 0; i < result.DocumentCount; i++)
{
    FoundDocument document = result.GetFoundDocument(i);
                    
    string path = indexFolder + "Highlighted-"+ i +".html";
    OutputAdapter outputAdapter = new FileOutputAdapter(path); 
    Highlighter highlighter = new HtmlHighlighter(outputAdapter); 
    index.Highlight(document, highlighter);
}

Là đầu ra, chúng tôi sẽ nhận được nhiều tệp HTML. Mỗi tệp sẽ hiển thị nội dung của một tài liệu khác nhau (ví dụ: excel.xlsx, source.docx, target.docx) với cụm từ/từ tìm kiếm được đánh dấu. Đưa ra bên dưới là đầu ra HTML được đánh dấu của tệp DOCX.

Làm nổi bật kết quả tìm kiếm toàn văn trong nội dung

Nhận giấy phép API miễn phí

Bạn có thể nhận giấy phép tạm thời miễn phí để sử dụng API mà không bị giới hạn đánh giá.

Sự kết luận

Trong bài viết này, chúng ta đã học cách tìm kiếm văn bản trong nhiều tài liệu của một thư mục bằng C#. Hơn nữa, chúng ta đã thảo luận cách lập trình làm nổi bật văn bản của kết quả tìm kiếm ở định dạng HTML.

Bạn có thể tìm hiểu thêm về API bằng cách sử dụng tài liệu. Nhiều ví dụ khác có tại GitHub. Nếu có thắc mắc, hãy liên hệ với chúng tôi qua diễn đàn.

Xem thêm