Những từ phát âm giống nhau nhưng khác nhau về nghĩa hoặc cách viết là từ đồng âm. Trong khi đó, những từ đánh vần giống nhau, nhưng khác nhau về nghĩa hoặc cách phát âm là Homographs. Từ đồng âm có thể là đồng âm hoặc đồng âm; hoặc cả hai. Đừng nhầm lẫn và tự động hóa nó. Trong bài viết này, bạn sẽ học cách tìm kiếm từ đồng âm trong nhiều tài liệu bằng C#.

Tìm kiếm từ đồng âm trong tệp bằng GroupDocs

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

.NET API để tìm kiếm từ đồng âm trong nhiều tệp

GroupDocs.Search giới thiệu API .NET (GroupDocs.Search for .NET) cho phép tìm kiếm các từ và từ đồng âm của chúng trong nhiều tệp của thư mục đã chỉ định. Chúng tôi sẽ sử dụng API này trong các ví dụ của bài viết này. Nó có thể tìm kiếm nội dung của nhiều định dạng khác nhau. Cùng với việc tìm kiếm từ đồng âm, API hỗ trợ nhiều cách tìm kiếm khác theo yêu cầu. Một số kỹ thuật tìm kiếm được hỗ trợ như sau:

  • Tìm kiếm từ đồng nghĩa
  • Tìm kiếm cụm từ
  • Tìm kiếm mờ
  • 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 thẻ hoang dã

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](https://www.nuget.org /packages/groupdocs.search).

PM> Install-Package GroupDocs.Search

Tìm từ đồng âm trong nhiều tệp bằng C#

Các bước sau đây hướng dẫn cách chúng ta có thể tìm kiếm từ đồng âm (từ có âm thanh/cách phát âm tương tự) trong các tệp trong một thư mục bằng C#.

Mã nguồn C# sau tìm tất cả các từ đồng âm trong tất cả các tệp của một thư mục đã xác định. Ngoài ra, bạn có thể quản lý từ điển đồng âm của mình.

// Tìm kiếm từ đồng âm trong nhiều tệp và thư mục bằng C#
string query = "right";
string indexFolder = @"path\indexFolder";
string documentsFolder = @"path\documentsFolder";

// Tạo một chỉ mục trong thư mục được chỉ định
Index index = new Index(indexFolder);
index.Add(documentsFolder);

// Tạo một đối tượng tùy chọn tìm kiếm
SearchOptions options = new SearchOptions()
{
    UseHomophoneSearch = true // Enabling Homophone Search
}; 

// Tìm kiếm từ 'đúng'
// Ngoài từ 'right', các từ "rite, wright, write,..." cũng sẽ được tìm kiếm
SearchResult result = index.Search(query, options);
Console.WriteLine("Query: " + query);
Console.WriteLine("Documents: " + result.DocumentCount);
Console.WriteLine("Occurrences: " + result.OccurrenceCount);

Đầu ra của đoạn mã trên như sau:

Query: **right**
Documents: 2
Occurrences: 17

Thực hiện theo các bước được đề cập bên dưới sau khi nhận được tất cả các từ đồng âm và số lần xuất hiện của chúng trong mỗi tài liệu để hiển thị kết quả tìm kiếm từ đồng âm.

  • Duyệt qua các kết quả tìm kiếm từ đồng âm được truy xuất trước đó.
  • Nhận từng tài liệu dưới dạng FoundDocument bằng cách sử dụng [GetFoundDocument()](https://apireference.groupdocs.com/search/ net/groupdocs.search.results/searchresult/methods/getfounddocument).
  • Sử dụng các thuộc tính của từng FoundDocument theo yêu cầu.
  • Bây giờ, hãy duyệt qua FoundFields của FoundDocument để lấy [FoundDocumentField](https://apireference.groupdocs. com/search/net/groupdocs.search.results/founddocumentfield).
  • Cuối cùng, từ mỗi FoundDocumentField, nhận Điều khoản của nó và các lần xuất hiện của chúng trong mỗi tài liệu.

Mã nguồn C# sau đây in kết quả tìm kiếm từ đồng âm cùng với số lần xuất hiện của mỗi thuật ngữ được tìm kiếm.

// In kết quả Tìm kiếm từ đồng âm trong 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);
        // 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" + field.Terms[k].PadRight(20) + field.TermsOccurrences[k]);
            }
        }
    }
}

Sau đây là đầu ra của ví dụ mã trên.

Query: **right**
Documents: 2
Total occurrences: 17

Document: C:/documents/sample.docx
Occurrences: 11
    Field: content
    Occurrences: 11
        right             3
        rite               4
        wright           1
        write             3
Document: C:/documents/sample.txt
Occurrences: 6
    Field: content
    Occurrences: 6
        right             4
        write             2

Tìm kiếm từ đồng âm và in kết quả bằng C# - Complete Code

Đoạn mã C# sau đây tổng hợp các bước trên, đầu tiên nó tìm tất cả các từ đồng âm theo truy vấn, sau đó in tất cả các lần xuất hiện của tất cả các từ đồng âm trong mỗi tài liệu trong thư mục được cung cấp.

// Tìm kiếm từ đồng âm trong nhiều tệp và thư mục, sau đó In kết quả bằng C#
string query = "right";
string indexFolder = @"path\indexFolder";
string documentsFolder = @"path\documentsFolder";

// Tạo một chỉ mục trong thư mục được chỉ định
Index index = new Index(indexFolder);
// Lập chỉ mục tài liệu từ thư mục được chỉ định
index.Add(documentsFolder);

// Tạo một đối tượng tùy chọn tìm kiếm
SearchOptions options = new SearchOptions()
{
    UseHomophoneSearch = true // Enabling Homophone Search
}; 

// Tìm kiếm từ 'đúng'
// Ngoài từ 'right', các từ "rite, wright, write,..." cũng sẽ được tìm kiếm
SearchResult result = index.Search(query, options);

// In kết quả
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);
        // 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" + field.Terms[k].PadRight(20) + field.TermsOccurrences[k]);
            }
        }
    }
}

Sự kết luận

Tóm lại, bạn đã học cách tìm các từ và từ đồng âm của chúng từ nhiều tài liệu của thư mục được chỉ định bằng C#. Bạn có thể thử xây dựng ứng dụng .NET của riêng mình để tìm kiếm từ đồng âm trong nhiều tệp bằng cách sử dụng GroupDocs.Search for .NET.

Tìm hiểu thêm về API tự động hóa tìm kiếm .NET từ tài liệu. Để trải nghiệm các tính năng, bạn có thể xem các ví dụ có sẵn trên kho lưu trữ GitHub. Liên hệ với chúng tôi nếu có bất kỳ câu hỏi nào thông qua diễn đàn.

Xem thêm