使用 GroupDocs 在文件中搜索同音字

同義詞是意思相近的詞,同音字讀音相同但意思或拼寫不同。我們學會了使用 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

從每個文檔中獲取同音字及其出現次數後,您可以按照以下步驟使用同音字搜索結果。

  • 遍歷搜索結果。
  • 使用 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 存儲庫中的可用示例。通過 論壇 聯繫我們進行任何查詢。

也可以看看