我們最近討論了如何獲取任何單詞的所有同義詞。如果我們能夠在許多不同的文檔中找到這些同義詞,那就太好了。在本文中,我們將看到如何使用 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
使用 Java 打印同義詞搜索結果
從上述步驟得到的搜索結果中,您可以得到搜索的每個詞和同義詞的信息。在獲取所有同義詞及其在每個文檔中出現的次數後,以下步驟詳細展示了結果:
- 首先,執行搜索以獲取 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 存儲庫中的示例。如有任何疑問,請隨時通過 論壇 聯繫我們。