同義詞是意思相近的詞,同音字讀音相同但意思或拼寫不同。我們學會了使用 Java 在多個文檔中查找同義詞。今天,在本文中,我們將了解如何使用 Java 在多個文檔中搜索同音異義詞。
下面將涵蓋以下主題:
用於搜索同音字的 Java API
GroupDocs.Search 展示了 Java API GroupDocs.Search for Java,它允許在任何特定文件夾的多個文件中查找任何單詞及其同音字。它可以搜索各種不同格式的內容。除了查找同音異義詞外,API 還支持許多其他搜索技術,包括:
- 區分大小寫搜索
- 模糊搜索
- 短語搜索
- 正則表達式搜索
- 同義詞搜索
- 通配符搜索
您可以從 下載部分 下載 JAR 文件,或在您的 Java 應用程序中使用最新的存儲庫和依賴項 Maven 配置。
<repository>
<id>GroupDocsJavaAPI</id>
<name>GroupDocs Java API</name>
<url>http://repository.groupdocs.com/repo/</url>
</repository>
<dependency>
<groupId>com.groupdocs</groupId>
<artifactId>groupdocs-search</artifactId>
<version>21.8</version>
</dependency>
PM> Install-Package GroupDocs.Search
在 Java 中查找多個文件中的同音字
以下步驟指導如何在 Java 中搜索一個文件夾的多個文件中的同音字。
- 定義搜索詞查詢、索引文件夾和文件的容器文件夾。
- 使用定義的索引文件夾創建 Index。
- 將文檔的文件夾添加到索引中。
- 定義 SearchOptions 並使用 setUseHomophoneSearch 方法啟用同音字搜索。
- 使用搜索方法執行同音字搜索。
- 根據需要使用檢索到的 SearchResult 的屬性。
以下 Java 源代碼在定義的文件夾的文件中查找所有同音字。此外,您還可以管理您的同音字詞典。
// 使用 Java 在多個文件和文件夾中搜索同音異義詞
String indexFolder = "path/indexFolder";
String documentsFolder = "path/documentsFolder";
String query = "right";
// 在指定文件夾中創建索引
Index index = new Index(indexFolder);
index.add(documentsFolder);
// 創建搜索選項對象
SearchOptions options = new SearchOptions();
options.setUseHomophoneSearch(true); // Enable Homophone Search
// 搜索“正確”一詞
// 除了單詞“right”之外,同音詞“rite, write, wright, ...”也會被搜索
SearchResult result = index.search(query, options);
System.out.println("Query: " + query);
System.out.println("Documents: " + result.getDocumentCount());
System.out.println("Word & Homophone Occurrences: " + result.getOccurrenceCount());
上述代碼的輸出如下:
Query: right
Documents: 2
Occurrences: 17
在 Java 中打印同音字搜索結果
從每個文檔中獲取同音字及其出現次數後,您可以按照以下步驟使用同音字搜索結果。
- 遍歷搜索結果。
- 使用 getFoundDocument 方法獲取每個 FoundDocument。
- 根據需要使用每個 FoundDocument 的屬性。
- 現在,通過獲取 FoundDocumentField 來遍歷 FoundDocument 的字段。
- 稍後,從每個 FoundDocumentField 中獲取所有術語及其在每個文檔中的出現。
以下 Java 代碼示例打印同音字搜索結果以及每個搜索詞的出現次數。
// 在 Java 中打印同音字搜索結果
System.out.println("Query: " + query);
System.out.println("Documents: " + result.getDocumentCount());
System.out.println("Word & Homophone Occurrences: " + result.getOccurrenceCount());
// 遍歷文檔
for (int i = 0; i < result.getDocumentCount(); i++) {
FoundDocument document = result.getFoundDocument(i);
System.out.println("Document: " + document.getDocumentInfo().getFilePath());
System.out.println("Occurrences: " + document.getOccurrenceCount());
// 遍歷找到的字段
for (FoundDocumentField field : document.getFoundFields()) {
System.out.println("\tField: " + field.getFieldName());
System.out.println("\tOccurrences: " + document.getOccurrenceCount());
// 打印找到的術語
if (field.getTerms() != null) {
for (int k = 0; k < field.getTerms().length; k++) {
System.out.println("\t\t" + field.getTerms()[k] + "\t - \t" + field.getTermsOccurrences()[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
使用 Java 搜索同音字並打印結果 - 完整代碼
以下 Java 代碼結合了上述步驟。最初,它根據查詢找到同音字,然後打印所提供文件夾中每個文檔中出現的所有同音字。
// 使用 Java 在多個文件和文件夾中搜索同音異義詞
String indexFolder = "path/indexFolder";
String documentsFolder = "path/documentsFolder";
String query = "right";
// 在指定文件夾中創建索引
Index index = new Index(indexFolder);
index.add(documentsFolder);
// 創建搜索選項對象
SearchOptions options = new SearchOptions();
options.setUseHomophoneSearch(true); // Enable Homophone Search
// 搜索“正確”一詞
// 除了單詞“right”之外,同音詞“rite, write, wright, ...”也會被搜索
SearchResult result = index.search(query, options);
System.out.println("Query: " + query);
System.out.println("Documents: " + result.getDocumentCount());
System.out.println("Word & Homophone Occurrences: " + result.getOccurrenceCount());
for (int i = 0; i < result.getDocumentCount(); i++) {
FoundDocument document = result.getFoundDocument(i);
System.out.println("Document: " + document.getDocumentInfo().getFilePath());
System.out.println("Occurrences: " + document.getOccurrenceCount());
for (FoundDocumentField field : document.getFoundFields()) {
System.out.println("\tField: " + field.getFieldName());
System.out.println("\tOccurrences: " + document.getOccurrenceCount());
// 打印找到的術語
if (field.getTerms() != null) {
for (int k = 0; k < field.getTerms().length; k++) {
System.out.println("\t\t" + field.getTerms()[k] + "\t - \t" + field.getTermsOccurrences()[k]);
}
}
}
}
結論
總而言之,您學習瞭如何使用 Java 從指定文件夾中的多個文檔中查找單詞及其同音異義詞。您可以嘗試使用 GroupDocs.Search for Java 開發自己的 Java 應用程序來搜索同音異義詞。
從文檔中了解更多 關於 Java Search Automation API。要體驗其功能,您可以查看 GitHub 存儲庫中的可用示例。通過 論壇 聯繫我們進行任何查詢。