如何在 GroupDocs.Search 中實作 Java 通配符搜尋
在現代資料驅動的應用程式中,您常常需要 實作 Java 通配符搜尋,讓使用者即使只知道單字的一部份也能找到資訊。無論您是在建置合規門戶、電商目錄,或內容管理系統,將通配符搜尋與日期範圍、分面、數值、正則表達式與布林查詢結合,都能打造真正強大的搜尋引擎。本教學將逐步說明每項進階功能、示範如何處理索引錯誤,並提供效能調校技巧——全部附上可直接複製的 Java 程式碼。
快速回答
- 什麼是 Java 通配符搜尋? 這是一種使用
?或*佔位符來匹配詞彙中一個或多個字元的查詢。 - 哪個函式庫提供此功能? GroupDocs.Search for Java。
- 需要授權嗎? 免費試用可用於開發;商業使用需購買正式授權。
- 可以與日期範圍查詢結合嗎? 可以——在單一查詢中混合通配符、日期範圍、分面與布林子句。
- 在大型資料集上快嗎? 若索引正確,搜尋在 200 萬筆文件的資料集上可於 500 毫秒內完成。
什麼是 Java 通配符搜尋?
Java 通配符搜尋讓您找出符合模式的文件,例如 ?ffect(可匹配 affect 或 effect)或 prod*(可匹配 product、production 等)。它非常適合拼寫錯誤、部分輸入,或使用者不確定完整詞彙的情況,提升搜尋相關性與使用者滿意度。
為什麼選擇 GroupDocs.Search for Java?
GroupDocs.Search 支援 10+ 種不同的查詢類型——包括簡單、通配符、分面、數值、日期範圍、正則表達式、布林與片語查詢——讓您無需切換多個函式庫即可打造複雜的搜尋體驗。引擎在最佳化的索引設定下,能在次秒延遲內處理多達 200 萬 份文件,且其事件驅動的錯誤處理機制讓您的索引流程更具韌性。
前置條件
- GroupDocs.Search Java 函式庫(v25.4 或更新版本)。
- Java Development Kit (JDK),與您的專案相容。
- 用於相依管理的 Maven(或手動下載)。
必要函式庫與環境設定
將 GroupDocs 倉庫與相依加入您的 pom.xml:
<repositories>
<repository>
<id>repository.groupdocs.com</id>
<name>GroupDocs Repository</name>
<url>https://releases.groupdocs.com/search/java/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>com.groupdocs</groupId>
<artifactId>groupdocs-search</artifactId>
<version>25.4</version>
</dependency>
</dependencies>
替代設定方式
若直接下載,請前往 GroupDocs.Search for Java releases。
授權與初始設定
先使用免費試用或臨時授權:
- 前往 GroupDocs License Options 了解詳情。
現在建立將保存可搜尋資料的索引資料夾。
設定 GroupDocs.Search for Java
基本初始化
Index 是 GroupDocs.Search 中代表磁碟上可搜尋索引的核心物件。首先,建立指向磁碟資料夾的 Index 物件:
import com.groupdocs.search.*;
// Initialize Index
String indexFolder = "YOUR_DOCUMENT_DIRECTORY\\output\\BasicUsage\\BuildSearchQuery";
Index index = new Index(indexFolder);
您現在已擁有所有搜尋操作的入口。
實作指南
功能 1:索引時的錯誤處理
如何捕捉索引錯誤(Java)
ErrorOccurred 事件會在索引引擎無法處理檔案時觸發,讓您可以記錄或重試,而不會中斷整批作業。
import com.groupdocs.search.events.*;
index.getEvents().ErrorOccurred.add(new EventHandler<IndexErrorEventArgs>() {
@Override
public void invoke(Object sender, IndexErrorEventArgs args) {
System.out.println(args.getMessage()); // Output the error message
}
});
// Add documents to the index
index.add("YOUR_DOCUMENT_DIRECTORY");
為什麼重要:透過監聽 ErrorOccurred,您可以記錄問題、重試失敗的檔案,或在不讓整個流程崩潰的情況下提醒使用者。
功能 2:簡單搜尋查詢
什麼是簡單搜尋?
SimpleSearch 在所有已索引欄位中執行直接的詞彙查找。
import com.groupdocs.search.*;
String query = "volutpat";
SearchResult result = index.search(query);
結果:回傳每一份包含 volutpat 詞彙的文件。
功能 3:通配符搜尋查詢
Java 通配符搜尋如何運作?
WildcardSearch 將 ? 解讀為單一字元佔位符,* 解讀為多字元佔位符。
String query = "?ffect";
SearchResult result = index.search(query);
結果:同時匹配 affect 與 effect,展示 ? 佔位符的威力。
功能 4:分面搜尋查詢
如何執行 Java 分面搜尋
FacetedSearch 將結果限制在特定欄位——通常是類別、作者或自訂標籤等中繼資料。
String query = "Content: magna";
SearchResult result = index.search(query);
結果:將搜尋限制於 Content 欄位,適合依類別或作者等中繼資料過濾。
功能 5:數值範圍搜尋查詢
如何搜尋數值範圍
NumericRangeSearch 取得數值欄位落在指定區間的文件。
String query = "2000 ~~ 3000";
SearchResult result = index.search(query);
結果:回傳數值介於 2000 與 3000 之間的文件。
功能 6:日期範圍搜尋查詢
如何執行自訂日期格式的 Java 日期範圍搜尋
SearchOptions 允許您指定自訂的 DateFormat(例如 MM/DD/YYYY),讓引擎能正確解析內容中的日期。
import com.groupdocs.search.options.*;
import java.util.*;
String query = "daterange(2000-01-01 ~~ 2001-06-15)";
SearchOptions options = new SearchOptions();
options.getDateFormats().clear();
DateFormatElement[] elements = {
DateFormatElement.getMonthTwoDigits(),
DateFormatElement.getDateSeparator(),
DateFormatElement.getDayOfMonthTwoDigits(),
DateFormatElement.getDateSeparator(),
DateFormatElement.getYearFourDigits()
};
DateFormat dateFormat = new DateFormat(elements, "/");
options.getDateFormats().addItem(dateFormat);
SearchResult result = index.search(query, options);
說明:透過自訂 SearchOptions,您告訴引擎以 MM/DD/YYYY 格式辨識日期,進而取得 2000 年 1 月 1 日至 2001 年 6 月 15 日之間的所有記錄。
功能 7:正則表達式搜尋查詢
如何執行 Java 正則搜尋
RegexSearch 接受標準的 Java 正則表達式模式,支援超越簡單通配符的複雜模式匹配。
String query = "^(.)\\1{2,}";
SearchResult result = index.search(query);
結果:找出連續三個以上相同字元的序列(例如 “aaa”、 “111”)。
功能 8:布林搜尋查詢
如何以 Java 布林搜尋結合條件
BooleanSearch 讓您組合 AND、OR、NOT 子句,以微調結果集。
String query = "justo AND NOT 3456";
SearchResult result = index.search(query);
結果:回傳包含 justo 但不包含 3456 的文件。
功能 9:複雜布林搜尋查詢
如何打造進階布林查詢
ComplexBooleanSearch 支援巢狀群組、接近運算子與模糊匹配,適用於高階檢索情境。
String query = "FileName: Engl?(1~3) OR Content: (3456 AND consequat)";
SearchResult result = index.search(query);
結果:搜尋檔名類似 “English”(允許 1‑3 個字元變化)或 內容同時包含 3456 與 consequat。
功能 10:片語搜尋查詢
如何搜尋精確片語
PhraseSearch 匹配完整的詞序列,保留順序與間距。
String query = "\"ipsum dolor sit amet\"";
SearchResult result = index.search(query);
結果:僅回傳包含精確片語 ipsum dolor sit amet 的文件。
實務應用
- 電商平台 – 使用 faceted search java 依尺寸、顏色、品牌等篩選商品。
- 內容管理系統 – 結合 boolean search java 與片語搜尋,提供高階編輯工具。
- 資料分析工具 – 利用 date range search 與 custom date format java 產生時間為基礎的報表與儀表板。
常見問題與解決方案
- 日期範圍搜尋無結果 – 確認文件中的日期格式與您在
DateFormat中設定的格式相符。 - 正則查詢命中過多 – 縮小模式或使用額外的欄位限定來限制搜尋範圍。
- 索引錯誤未被捕捉 – 確保在呼叫
index.add(...)之前已註冊事件處理器。 - 通配符搜尋速度慢 – 避免在大型索引上使用前置通配符(
*term),建議使用後置或中置模式。
常見問答
Q: 可以將日期範圍搜尋與其他查詢類型混合使用嗎?
A: 當然可以。您可以在單一查詢字串中同時加入日期範圍子句、通配符、布林、分面或正則模式。
Q: 更改日期格式後需要重新建立索引嗎?
A: 需要。索引儲存的是已斷詞的詞彙;僅修改 SearchOptions 不會重新斷詞既有資料。請在變更格式後重新索引文件。
Q: GroupDocs.Search 如何處理大型索引?
A: 它採用增量索引與磁碟儲存方式,讓您在保持低記憶體佔用的同時,擴展至數百萬文件。
Q: 通配符字元的使用有上限嗎?
A: 雖然通配符處理效率高,但大量前置通配符(例如 *term)會影響效能。建議使用前綴或後綴通配符。
Q: 生產環境建議採用哪種授權模式?
A: 建議購買 GroupDocs 的永久或訂閱授權,以取得更新、支援,且不受試用限制。
結論
掌握 實作 Java 通配符搜尋 以及 GroupDocs.Search for Java 所提供的完整進階查詢類型,您即可打造高回應、功能豐富的搜尋體驗。實作穩健的錯誤處理、微調索引設定,並靈活組合各種查詢,以滿足幾乎所有檢索需求。立即開始實驗,提升應用程式的資料存取能力。
最後更新: 2026-08-26
測試環境: GroupDocs.Search 25.4 (Java)
作者: GroupDocs