我們最近討論了如何獲取任何單詞的所有同義詞。如果我們能夠在許多不同的文檔中找到這些同義詞,那就太好了。在本文中,我們將看到如何使用 Java 在多個文件中搜索任何單詞及其同義詞。

以下是下面涵蓋的主題:

Java API - 在多個文件中搜索同義詞

GroupDocs.Search 展示了 Java APIGroupDocs.Search for Java。它允許在指定文件夾的各種多個文件中搜索單詞及其同義詞。它支持一長串不同的文件格式和各種搜索技術。下面提到了其中一些功能,您可以結合使用它們來實現您的目標:

  • 布爾搜索
  • 區分大小寫搜索
  • 突出顯示搜索結果
  • 同音字查詢
  • 短語搜索
  • 正則表達式搜索
  • 按塊搜索
  • 同義詞搜索

下載或配置

您可以從 下載部分 下載 JAR 文件,或者只獲取基於 maven 的 Java 應用程序的 pom.xml 的最新存儲庫和依賴項配置。

<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>

使用 Java 在多個文件中查找同義詞

讓我們快速轉到搜索文件中的同義詞。以下步驟顯示如何使用 Java 在文件夾內的文件中搜索同義詞(具有相似含義的詞):

  • 定義索引文件夾、文檔文件夾和查詢(要搜索的詞)。
  • 使用 Index 類使用定義的索引文件夾創建索引。
  • 將文檔的文件夾添加到索引中。
  • 使用 SearchOptions 啟用同義詞搜索。
  • 調用 Index 類的 search 方法並傳遞帶有搜索選項的查詢。
  • 使用檢索到的 SearchResult 類的屬性打印摘要。

以下源代碼顯示瞭如何使用 Java 查找文件中的所有同義詞:

// 使用 Java 在多個文件和文件夾中搜索同義詞
String indexFolder = "path/indexFolder";
String documentsFolder = "path/documentsFolder";
String query = "make";

// 在指定文件夾中創建索引
Index index = new Index(indexFolder);
index.add(documentsFolder);

// 創建搜索選項對象
SearchOptions options = new SearchOptions();
options.setUseSynonymSearch(true); // Enable Synonym Search

// 搜索“製作”一詞
// 除了單詞“make”之外,還將搜索同義詞“do, get, have, ...”
SearchResult result = index.search(query, options);

System.out.println("Query: " + query);
System.out.println("Documents: " + result.getDocumentCount());
System.out.println("Word & Synonym Occurrences: " + result.getOccurrenceCount());

以下是上述代碼的輸出:

Query: **make**
Documents: 3
Word & Synonym Occurrences: 44 

從上述步驟得到的搜索結果中,您可以得到搜索的每個詞和同義詞的信息。在獲取所有同義詞及其在每個文檔中出現的次數後,以下步驟詳細展示了結果:

  • 首先,執行搜索以獲取 SearchResult
  • 遍歷搜索結果以處理每個 FoundDocument
  • 打印每個 FoundDocument 的相應屬性。
  • 現在,提取並遍歷每個 FoundDocument 中的 FoundDocumentField
  • 每個 FoundDocumentField 中都有其術語、出現次數和其他屬性。使用相應的吸氣劑。

以下源代碼顯示了同義詞搜索的結果以及每個搜索詞在 Java 中的出現次數。

// 在 Java 中打印同義詞搜索結果
System.out.println("Query: " + query);
System.out.println("Documents: " + result.getDocumentCount());
System.out.println("Word & Synonym 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: **make**
Documents: 2
Total occurrences: 22

Document: C:/documents/sample.docx
Occurrences: 13
    Field: content
    Occurrences: 13
        **make**  -  2
        **have**  -  1
        **get**  -  2
        **do**  -  8
- - - - - - - - - - - - - - - - 
Document: C:/documents/sample.txt
Occurrences: 11
    Field: content
    Occurrences: 11
        **make**  -  1
        **have**  -  2
        **get**  -  1
        **do**  -  7
- - - - - - - - - - - - - - - - 
Document: C:/documents/sample.pdf
Occurrences: 20
    Field: content
    Occurrences: 20
        **make**  -  2
        **have**  -  2
        **get**  -  2
        **do**  -  14 

在 Java 中搜索同義詞和打印結果——完整代碼

我們把上面兩個步驟結合起來,所以這裡是完整的源代碼。首先,它根據提供的查詢查找所有同義詞。然後,它在 Java 中打印每個文檔中每個同義詞的所有出現。

// 使用 Java 在多個文件和文件夾中搜索同義詞
String indexFolder = "path/indexFolder";
String documentsFolder = "path/documentsFolder";
String query = "make";

// 在指定文件夾中創建索引
Index index = new Index(indexFolder);
index.add(documentsFolder);

// 創建搜索選項對象
SearchOptions options = new SearchOptions();
options.setUseSynonymSearch(true); // Enable Synonym Search

// 搜索“製作”一詞
// 除了單詞“make”之外,還將搜索同義詞“do, get, have, ...”
SearchResult result = index.search(query, options);

System.out.println("Query: " + query);
System.out.println("Documents: " + result.getDocumentCount());
System.out.println("Word & Synonym 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]);
            }
        }
    }
}

獲取免費的 API 許可證

您可以獲得免費的臨時許可證,以便在不受評估限制的情況下使用 API。

結論

總而言之,我們討論瞭如何使用 Java 在多個文檔中搜索任何單詞及其同義詞。最重要的是,現在您可以嘗試開發自己的 Java 應用程序來進行搜索,就像 GroupDocs.Search App 一樣。

從文檔中了解更多 關於 Java Search Automation API。要體驗這些功能,請嘗試 GitHub 存儲庫中的示例。如有任何疑問,請隨時通過 論壇 聯繫我們。

也可以看看