如何在 Java 中使用 GroupDocs.Search 进行正则搜索
在成千上万的文本文件中搜索可能像在大海捞针一样。如何进行正则搜索 在 Java 中变得轻而易举,只需将语言强大的正则表达式引擎与 GroupDocs.Search 结合使用,该库会构建索引以实现闪电般快速的模式匹配。接下来几分钟,你将看到如何安装库、创建索引、添加文件,以及运行简单的基于文本和面向对象的正则查询。结束时,你将能够在任何 Java 应用程序中嵌入强大的模式匹配搜索。
快速答案
- 主要库是什么? GroupDocs.Search for Java
- 如何开始? 添加 Maven 依赖并实例化
Index对象 - 我可以使用正则过滤内容吗? 是的 – 在内容过滤场景中使用正则查询
- 我需要许可证吗? 生产使用需要免费试用或临时许可证
- 支持哪个 JDK 版本? Java 8 或更高
什么是正则搜索?
正则搜索让你能够一次性在众多文件中定位日期、电子邮件地址或重复字符等模式。它将普通文本查询转化为强大的基于规则的扫描器,能够即时提取或屏蔽内容。
为什么在正则搜索中使用 GroupDocs.Search?
GroupDocs.Search 只需对文档建立一次索引,随后在每次查询时复用该索引,提供 最高 10 倍更快 的搜索速度,相比原始文件扫描更高效。该库支持 30 多种文件格式(PDF、DOCX、XLSX、PPTX、TXT、HTML 等),并且能够在不将整个文件加载到内存的情况下处理数百页的文件。
先决条件
- Java 开发工具包 (JDK) 8 或更高
- Maven 用于依赖管理
- 基本了解 Java 正则表达式
所需库和依赖
将 GroupDocs.Search 添加到你的 Maven 项目中:
<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 下载最新的 JAR 包。
许可证获取
从 GroupDocs.License 获取免费试用或临时许可证,并在应用启动时加载。
为 Java 设置 GroupDocs.Search
安装信息
- Maven 集成: 将上面显示的仓库和依赖添加到你的
pom.xml。 - 直接下载: 将 JAR 文件放置在项目的类路径中。
- 许可证应用: 在应用启动时加载许可证文件。
import com.groupdocs.search.*;
public class SearchSetup {
public static void main(String[] args) {
// Initialize the index by specifying a directory.
String indexFolder = "YOUR_DOCUMENT_DIRECTORY\\output\\AdvancedUsage\\Searching\\RegularExpressionSearch";
Index index = new Index(indexFolder);
System.out.println("Index created successfully at: " + indexFolder);
}
}
核心组件
Index 类是核心组件,负责存储从文档中提取的可搜索标记。它能够在不重新读取原始文件的情况下快速查找任何词汇或模式。
如何创建索引
创建索引非常简单:实例化 Index 类并提供一个用于存放索引文件的文件夹路径。构造函数在首次使用时会创建必要的数据库文件,并为添加和搜索文档做好准备。创建后,可在所有查询中复用同一索引。
String indexFolder = "YOUR_DOCUMENT_DIRECTORY\\output\\AdvancedUsage\\Searching\\RegularExpressionSearch";
Index index = new Index(indexFolder);
如何添加文档
要使文件可搜索,只需使用指向文件路径的 Document(或 DocumentInfo)实例调用 index.add。库会解析内容、提取标记并将其存入索引。此操作可对单个文件或批量文件执行,更新会以增量方式合并。
index.add("YOUR_DOCUMENT_DIRECTORY");
system.out.println("Documents added to the index.");
如何以文本形式执行正则表达式搜索
RegexQuery 定义了一种基于正则表达式的搜索查询。使用纯文本模式加载 RegexQuery,并将其传递给 Index 的 search 方法。引擎会在索引标记上评估该模式并返回匹配的文档引用,使一次性查找既快速又简便。
String query1 = "^((.)\\2{1,})";
如何以对象形式执行正则表达式搜索
RegexQuery 也可以构建为对象,并在多次搜索中复用。先定义一次查询,配置如不区分大小写或模糊匹配等选项,然后重复调用 index.search。当相同模式应用于多个文档集时,此方式可提升性能。
SearchResult result1 = index.search(query1);
system.out.println("Number of occurrences found: " + result1.getDocumentCount());
内容过滤正则使用案例
你可以使用正则自动屏蔽或标记符合特定模式的内容,例如:
- 检测重复字符以进行垃圾邮件过滤
- 查找类似信用卡的序列以进行数据隐私检查
- 提取日期或 ID 以供下游处理
实际应用
- 文档管理系统: 通过模式(例如发票号码)定位合同、发票或政策。
- 内容审核: 在论坛或聊天应用中使用正则规则审核用户生成的文本。
- 数据提取: 从非结构化的 PDF 或 Word 文件中提取结构化数据,如订单号。
性能考虑因素
- 索引更新: 每当源文件更改时调用
index.add以保持结果最新。 - 内存管理: 对于超过 100 万文档的语料库,启用增量索引以控制堆内存使用。
- 正则设计: 保持模式简洁;例如
\d{4}-\d{2}-\d{2}的运行速度是通配符密集表达式.*的 3 倍。
结论
你现在已经了解 如何进行正则搜索 在 Java 中使用 GroupDocs.Search,从安装库、创建索引到执行基于文本和面向对象的查询。这些技术让你能够在任何 Java 应用程序中添加快速、具备模式感知的搜索,无论是构建文档门户、合规扫描器还是数据挖掘流水线。
常见问题
Q: 在 GroupDocs.Search 中,基于文本的正则查询与基于对象的正则查询有什么区别?
A: 基于文本的查询是快速的一行代码,而基于对象的查询提供可复用、类型安全的定义,可存储并在多次搜索中重复使用。
Q: GroupDocs.Search 能否索引非文本文件,如 PDF 或 Excel 文件?
A: 能,库会从 PDF、DOCX、XLSX、PPTX 等超过 30 种格式中提取可搜索的文本。
Q: 添加新文件后,如何更新已有的搜索索引?
A: 使用新或已修改的文档调用 index.add;库会合并更改而无需重新构建整个索引。
Q: 使用正则与 GroupDocs.Search 时常见的陷阱有哪些?
A: 过于宽泛的模式(例如 .*)会导致性能下降,且错误的表达式可能得不到任何结果。请始终先在样本集上测试模式。
Q: 在哪里可以找到更高级的 GroupDocs.Search 教程?
A: 访问 GroupDocs Documentation 获取深入指南、API 参考和示例项目。
Last Updated: 2026-07-31
Tested With: GroupDocs.Search 25.4
Author: GroupDocs
SearchQuery query2 = SearchQuery.createRegexQuery("^(.)\\1{1,}");
SearchResult result2 = index.search(query2);
system.out.println("Occurrences found using object form: " + result2.getDocumentCount());