發音相同但含義或拼寫不同的詞是同音詞。而拼寫相同但含義或發音不同的詞是同形異義詞。同音異義詞既可以是同音異義詞,也可以是同形異義詞;或兩者。讓我們不要混淆和自動化它。在本文中,您將了解如何使用 C# 在多個文檔中搜索同音異義詞。
下面將涵蓋以下主題:
用於在多個文件中搜索同音字的 .NET API
GroupDocs.Search 展示了 .NET API(GroupDocs.Search for .NET)允許在指定文件夾的多個文件中搜索單詞及其同音字。我們將在本文的示例中使用此 API。它可以搜索各種不同格式的內容。除了查找同音異義詞外,API 還支持許多其他方式來根據需要進行搜索。一些受支持的搜索技術如下:
- 同義詞搜索
- 短語搜索
- 模糊搜索
- 區分大小寫搜索
- 正則表達式搜索
- 通配符搜索
您可以從 下載部分 下載 DLL 或 MSI 安裝程序,或通過 NuGet 在您的 .NET 應用程序中安裝 API /packages/groupdocs.search)。
PM> Install-Package GroupDocs.Search
使用 C# 在多個文件中查找同音字
以下步驟指導我們如何使用 C# 在文件夾中的文件中搜索同音字(具有相似聲音/發音的單詞)。
- 定義搜索查詢、索引文件夾和包含您的文件的文件夾。
- 使用定義的索引文件夾創建 索引。
- 將文檔的文件夾添加到創建的索引中。
- 定義 SearchOptions 並設置 [UseHomophoneSearch](https://apireference.groupdocs.com/search/net/groupdocs .search.options/searchoptions/properties/usehomophonesearch)為真。
- 通過使用查詢和搜索選項調用 Search 方法來搜索所有同音字。
- 使用檢索到的 SearchResult 屬性的摘要。
以下 C# 源代碼查找定義文件夾的所有文件中的所有同音異義詞。此外,您還可以管理同音字詞典。
// 使用 C# 在多個文件和文件夾中搜索同音字
string query = "right";
string indexFolder = @"path\indexFolder";
string documentsFolder = @"path\documentsFolder";
// 在指定文件夾中創建索引
Index index = new Index(indexFolder);
index.Add(documentsFolder);
// 創建搜索選項對象
SearchOptions options = new SearchOptions()
{
UseHomophoneSearch = true // Enabling Homophone Search
};
// 搜索“正確”一詞
// 除了“right”這個詞,“rite, wright, write, ...”這些詞也會被搜索
SearchResult result = index.Search(query, options);
Console.WriteLine("Query: " + query);
Console.WriteLine("Documents: " + result.DocumentCount);
Console.WriteLine("Occurrences: " + result.OccurrenceCount);
上述代碼的輸出如下:
Query: **right**
Documents: 2
Occurrences: 17
使用 C# 打印同音字搜索結果
獲取每個文檔中的所有同音字及其出現次數後,按照以下步驟呈現同音字搜索結果。
- 遍歷前面檢索到的同音字搜索結果。
- 使用 [GetFoundDocument()](https://apireference.groupdocs.com/search/ net/groupdocs.search.results/searchresult/methods/getfounddocument) 方法。
- 根據需要使用每個 FoundDocument 的屬性。
- 現在,遍歷FoundDocument的FoundFields得到[FoundDocumentField](https://apireference.groupdocs。 com/search/net/groupdocs.search.results/founddocumentfield)。
- 最後,從每個 FoundDocumentField 中獲取其條款及其在每個文檔中的出現。
以下 C# 源代碼打印同音字搜索結果以及每個搜索詞的出現次數。
// 在 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);
// 打印找到的術語
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]);
}
}
}
}
以下是上述代碼示例的輸出。
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
使用 C# 搜索同音字並打印結果 - 完整代碼
下面的C#代碼總結了上述步驟,它首先根據查詢找到所有的同音字,然後在提供的文件夾中打印每個文檔中所有同音字的出現次數。
// 在多個文件和文件夾中搜索同音字,然後使用 C# 打印結果
string query = "right";
string indexFolder = @"path\indexFolder";
string documentsFolder = @"path\documentsFolder";
// 在指定文件夾中創建索引
Index index = new Index(indexFolder);
// 索引指定文件夾中的文檔
index.Add(documentsFolder);
// 創建搜索選項對象
SearchOptions options = new SearchOptions()
{
UseHomophoneSearch = true // Enabling Homophone Search
};
// 搜索“正確”一詞
// 除了“right”這個詞,“rite, wright, write, ...”這些詞也會被搜索
SearchResult result = index.Search(query, options);
// 打印結果
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);
// 打印找到的術語
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]);
}
}
}
}
結論
綜上所述,您已經學會瞭如何使用C#從指定文件夾的多個文檔中查找單詞及其同音字。您可以嘗試構建自己的 .NET 應用程序,使用 GroupDocs.Search for .NET 在多個文件中搜索同音異義詞。
從文檔中了解更多 關於 .NET 搜索自動化 API。要體驗這些功能,您可以查看 GitHub 存儲庫中的可用示例。如有任何疑問,請通過論壇 聯繫我們。