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#.
Các chủ đề sau đây sẽ được đề cập dưới đây:
- .NET API - Tìm kiếm từ đồng âm
- Tìm từ đồng âm trong tài liệu bằng C#
- Chơi với kết quả tìm kiếm từ đồng âm
.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#.
- Xác định truy vấn tìm kiếm, thư mục lập chỉ mục và thư mục chứa tệp của bạn.
- Tạo Chỉ mục với thư mục chỉ mục đã xác định.
- Thêm thư mục của tài liệu vào chỉ mục đã tạo.
- Xác định SearchOptions và đặt [UseHomophoneSearch](https://apireference.groupdocs.com/search/net/groupdocs .search.options/searchoptions/properties/usehomophonesearch) thành true.
- Tìm kiếm tất cả các từ đồng âm bằng cách gọi phương thức Tìm kiếm với truy vấn và tùy chọn tìm kiếm.
- Sử dụng bản tóm tắt bằng cách sử dụng các thuộc tính của [Kết quả tìm kiếm] đã truy xuất (https://apireference.groupdocs.com/search/net/groupdocs.search.results/searchresult).
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
In kết quả tìm kiếm từ đồng âm bằng C#
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.