Tìm kiếm mờ bằng C# .NET
  • Bạn không biết màu sắc hoặc cách viết màu nào được sử dụng trong tài liệu.
  • Đang tìm kiếm “John“, nhưng nó có thể được đánh vần là “Jon” hoặc có thể là “Jhon“.
  • Định vị “USA” khi người dùng nhập “USA“.
  • Từ hoặc cụm từ bạn đang tìm kiếm có thể có một “lỗi sai”, rất tiếc nó lại là một “lỗi”.

Ở đây có Tìm kiếm mờ. Tìm kiếm mờ cho phép bạn tìm kết quả khớp gần đúng thay vì kết quả khớp chính xác trong dữ liệu, mang lại sự linh hoạt trong truy vấn tìm kiếm. Điều này đặc biệt hữu ích trong các tình huống có lỗi chính tả, lỗi chính tả hoặc các biến thể trong dữ liệu. Bài viết này trình bày cách thực hiện tìm kiếm mờ trong nhiều tài liệu trên các thư mục bằng C# theo chương trình.

Thư viện tìm kiếm mờ C#

Đối với Tìm kiếm mờ, chúng tôi sẽ sử dụng API GroupDocs.Search for .NET. Điều này cho phép chấp nhận một mức độ nhất định về chính tả, giúp nó có hiệu quả trong việc điều chỉnh các biến thể ngôn ngữ khu vực giống như giữa tiếng Anh Anh và tiếng Anh Mỹ.

Thư viện này cho phép chúng tôi tìm kiếm văn bản theo chương trình ở nhiều định dạng tệp, chẳng hạn như tài liệu Word (DOC, DOCX), bảng tính (XLS, XLSX), bản trình bày (PPT, PPTX), tệp PDF, Đánh dấu (HTML, XML), Markdown (MD), sách điện tử (EPUB, CHM, FB2), email (MSG, EML), tài liệu OneNote và kho lưu trữ ZIP.

Để tìm hiểu tất cả các loại tệp bạn có thể làm việc, hãy xem tài liệu.

Bạn có thể chọn tải trình cài đặt DLL hoặc MSI từ phần tải xuống hoặc thêm API vào chương trình .NET của mình bằng NuGet.

Hãy tìm kiếm mờ trong tệp bằng C#

Hãy làm theo các bước sau để thực hiện tìm kiếm mờ trong nhiều tệp có định dạng tệp khác nhau trong các thư mục bằng C#:

  • Tạo Chỉ mục bằng cách cung cấp đường dẫn thư mục.
  • Thêm đường dẫn thư mục mẹ cho thư mục tìm kiếm vào chỉ mục đã tạo.
  • Xác định truy vấn tìm kiếm.
  • Kích hoạt Tìm kiếm mờ bằng cách bật tùy chọn.
  • Đặt Mức độ tương tự trong Thuật toán mờ theo yêu cầu.
  • Thực hiện tìm kiếm bằng phương pháp Search để nhận được kết quả tìm kiếm.
  • Bây giờ, bạn có thể lặp lại SearchResults để tạo hoặc in kết quả đầu ra theo ý muốn.

Tìm kiếm mờ trong mã C# được đề cập bên dưới sẽ tìm thấy các kết quả khớp gần đúng của truy vấn đã cho trong tất cả các tệp trên tất cả các thư mục con với sai số chính tả là 20%.

// Fuzzy Tìm kiếm nhiều tệp trên nhiều thư mục bằng C#

// Tạo thư mục chỉ mục và thêm thư mục tài liệu vào đó
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);

Ở đây, mức độ tương tự được đặt thành 0,8 tức là khớp 80% tương ứng với khả năng chịu lỗi 20%. Bạn có thể điều chỉnh mức độ dung sai bằng cách điều chỉnh mức độ tương tự trong mã.

Dưới đây là kết quả tìm kiếm mờ mà bạn có thể thu được từ đoạn mã trên. Nó khá đơn giản, tuy nhiên, mã in cũng có sẵn ở phần sau của bài viết này.

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

In kết quả tìm kiếm

Mã C# sau đây cung cấp hai cách để trình bày kết quả tìm kiếm của bạn.

  • Đánh dấu tất cả các kết quả phù hợp gần đúng.
  • In kết quả ở định dạng dễ đọc và phân tích được
// Đánh dấu và in kết quả tìm kiếm cho tất cả tài liệu bằng 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);
        // In các thuật ngữ được tìm thấy
        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("===========================================");
}

Nhận giấy phép miễn phí hoặc dùng thử miễn phí

Giấy phép miễn phí

Nhận giấy phép tạm thời miễn phí để khám phá thư viện này mà không bị ràng buộc.

Dùng thử miễn phí

Bạn có thể tải xuống bản dùng thử miễn phí từ phần tải xuống.

API .NET để tìm kiếm trong tệp và thư mục

Phần kết luận

Trong bài viết này, chúng ta đã xem xét cách tiếp cận theo chương trình C# đối với sự kỳ diệu của tìm kiếm mờ để tìm tất cả các từ khớp gần đúng nhưng có khả năng chịu lỗi ở một mức độ nhất định. Tính năng này làm cho tìm kiếm mờ trở nên hiệu quả trong việc cung cấp các biến thể ngôn ngữ khu vực như giữa tiếng Anh Anh và tiếng Anh Mỹ, lỗi chính tả trong văn bản, biến thể tên và khớp ngữ âm.

Để biết chi tiết đầy đủ về API, độc giả nên tham khảo tài liệu.

Mọi thắc mắc hoặc thảo luận bổ sung có thể được chuyển đến diễn đàn.


Xem thêm