使用 GroupDocs.Search 过滤 Java 文件扩展名

在本综合教程中,您将学习在使用 GroupDocs.Search 对文档建立索引时如何 filter file extensions java。完成本指南后,您将能够仅包含所需的文件类型,排除不需要的格式,并使用逻辑 AND、OR、NOT 运算符将这些规则与日期范围和路径过滤器结合。此方法可保持索引精简,加快搜索速度,并帮助您遵守数据处理政策。

快速答案

  • What is the java file extension filter? 它是一条规则,告诉 GroupDocs.Search 在索引期间应包含或排除哪些文件扩展名。
  • Which library provides this feature? GroupDocs.Search for Java.
  • Do I need a license? 免费试用可用于评估;生产环境需要完整许可证。
  • Can I combine filters? 是的——您可以使用 AND、OR、NOT 逻辑链式组合扩展名、日期、大小和路径过滤器。
  • Is it Maven‑compatible? 当然——将 GroupDocs.Search 依赖添加到您的 pom.xml 中。

什么是 java 文件扩展名过滤器?

java file extension filter 是一套规则,在文件发送到索引引擎之前评估其扩展名。通过指定如 .txt、.pdf 或 .epub 等扩展名,您可以 include files by extension 或 exclude files by extension,以保持索引的聚焦并使搜索结果相关。

为什么在 GroupDocs.Search 中使用文件扩展名过滤?

文件扩展名过滤通过排除不相关的格式提升索引效率,降低存储需求,并通过防止不需要的内容进入索引帮助满足合规规则。它还能够加快查询响应,因为搜索引擎处理的是更小且更相关的数据集。

  • Performance: 跳过不需要的文件可减少 I/O,并在大型仓库中将索引速度提升至最高 40 %。
  • Storage savings: 仅将相关文档存储在索引中,平均可降低磁盘使用量 30 %。
  • Compliance: 防止意外索引机密或不受支持的文件类型。
  • Flexibility: 与 date range filter java 功能结合,以针对在特定时间段内创建或修改的文件。

前置条件

在开始之前,请确保您具备以下条件:

必需的库和依赖

  • GroupDocs.Search for Java – 版本 25.4 或更高(支持 60+ 输入格式)。
  • Java Development Kit (JDK) – 任意兼容版本(8 或更高)。

环境设置

  • 集成开发环境 (IDE):IntelliJ IDEA、Eclipse 或任何兼容 Maven 的 IDE。

知识前提

  • 基础 Java 编程。
  • 熟悉 Java 中的文件 I/O。
  • 了解正则表达式和日期时间处理。

设置 GroupDocs.Search for Java

要开始使用 GroupDocs.Search,您需要在项目中将其作为依赖项引入。

Maven 配置

在您的 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 下载最新版本。

获取许可证

  1. Free trial – 免费试用功能。
  2. Temporary license – 在有限期间内获得完整功能。
  3. Purchase – 获取用于生产的永久许可证。

基本初始化和设置

库添加后,初始化您的索引环境。IndexSettings 类包含所有配置选项,包括过滤器。

import com.groupdocs.search.*;

String indexFolder = "YOUR_OUTPUT_DIRECTORY";
Index index = new Index(indexFolder);

实现指南

下面我们深入每种过滤器类型,解释 why it matters 并提供可直接复制到项目中的逐步说明。

文件扩展名过滤

在索引期间按扩展名过滤文件。当您只想处理电子书(.fb2、.epub)和纯文本文件(.txt)时,这非常适用。

概述

DocumentFilter.createFileExtension 创建一个扩展名白名单。

实现步骤

  1. Create filter – 定义要保留的扩展名。

    DocumentFilter filter = DocumentFilter.createFileExtension(".fb2", ".epub", ".txt");
    IndexSettings settings = new IndexSettings();
    settings.setDocumentFilter(filter);
    
  2. Initialize index and add documents – 在构建 IndexSettings 时应用过滤器。

    Index index = new Index("YOUR_OUTPUT_DIRECTORY\\FileExtensionFilter", settings);
    index.add("YOUR_DOCUMENT_DIRECTORY");
    

逻辑 NOT 过滤器

在搜索场景中不需要时,排除特定扩展名,例如网页和 PDF。

实现步骤

  1. Create exclusion filter – 指定要拒绝的扩展名。

    DocumentFilter filterNot = DocumentFilter.createFileExtension(".htm", ".html", ".pdf");
    DocumentFilter invertedFilter = DocumentFilter.createNot(filterNot);
    
  2. Apply to index settings – 将 NOT 过滤器与其他规则结合。

    IndexSettings settingsNot = new IndexSettings();
    settingsNot.setDocumentFilter(invertedFilter);
    
  3. Add documents – 仅索引通过组合过滤器的文件。

    Index indexNot = new Index("YOUR_OUTPUT_DIRECTORY\\LogicalNotFilter", settingsNot);
    indexNot.add("YOUR_DOCUMENT_DIRECTORY");
    

逻辑 AND 过滤器

组合多个条件——创建日期、扩展名和文件大小——以便 only files that meet all criteria 被索引。

概述

DocumentFilter.createAnd 将多个过滤器合并为单一规则。

实现步骤

  1. Define filters – 为每个条件创建单独的过滤器。

    DocumentFilter filter1 = DocumentFilter.createCreationTimeRange(Utils.createDate(2015, 1, 1), Utils.createDate(2016, 1, 1));
    DocumentFilter filter2 = DocumentFilter.createFileExtension(".txt");
    DocumentFilter filter3 = DocumentFilter.createFileLengthUpperBound(8 * 1024 * 1024);
    
  2. Combine filters – 使用 AND 运算符要求满足所有条件。

    DocumentFilter finalFilterAnd = DocumentFilter.createAnd(filter1, filter2, filter3);
    IndexSettings settingsAnd = new IndexSettings();
    settingsAnd.setDocumentFilter(finalFilterAnd);
    
  3. Index documents – 将组合过滤器传递给索引流水线。

    Index indexAnd = new Index("YOUR_OUTPUT_DIRECTORY\\LogicalAndFilter", settingsAnd);
    indexAnd.add("YOUR_DOCUMENT_DIRECTORY");
    

逻辑 OR 过滤器

包含满足 any 指定条件的文件——当您想捕获小文本文件和较大非文本文件时非常有用。

实现步骤

  1. Define filters – 为每个备选条件创建单独的过滤器。

    DocumentFilter txtFilter = DocumentFilter.createFileExtension(".txt");
    DocumentFilter notTxtFilter = DocumentFilter.createNot(txtFilter);
    
  2. Combine filters with logical conditions – 使用 OR 运算符。

    DocumentFilter bound5Filter = DocumentFilter.createFileLengthUpperBound(5 * 1024 * 1024);
    DocumentFilter bound10Filter = DocumentFilter.createFileLengthUpperBound(10 * 1024 * 1024);
    
    DocumentFilter txtSizeFilter = DocumentFilter.createAnd(txtFilter, bound5Filter);
    DocumentFilter notTxtSizeFilter = DocumentFilter.createAnd(notTxtFilter, bound10Filter);
    
  3. Finalize OR filter – 将组合过滤器附加到索引配置中。

    DocumentFilter finalFilterOr = DocumentFilter.createOr(txtSizeFilter, notTxtSizeFilter);
    
    IndexSettings settingsOr = new IndexSettings();
    settingsOr.setDocumentFilter(finalFilterOr);
    Index indexOr = new Index("YOUR_OUTPUT_DIRECTORY\\LogicalOrFilter", settingsOr);
    indexOr.add("YOUR_DOCUMENT_DIRECTORY");
    

创建时间过滤器

针对在特定期间内创建的文件——经典的 date range filter java 场景。

实现步骤

  1. Define date‑range filter – 指定开始和结束日期。

    DocumentFilter filter3CTime = DocumentFilter.createCreationTimeRange(Utils.createDate(2017, 1, 1), Utils.createDate(2018, 6, 15));
    IndexSettings settingsCTime = new IndexSettings();
    settingsCTime.setDocumentFilter(filter3CTime);
    
  2. Index documents – 仅索引创建时间戳位于该范围内的文件。

    Index indexCTime = new Index("YOUR_OUTPUT_DIRECTORY\\CreationTimeFilters", settingsCTime);
    indexCTime.add("YOUR_DOCUMENT_DIRECTORY");
    

修改时间过滤器

排除在特定截止日期之后被修改的文件。

实现步骤

  1. Define filter – 设置最大修改时间戳。

    DocumentFilter filter2MTime = DocumentFilter.createModificationTimeUpperBound(Utils.createDate(2018, 6, 15));
    IndexSettings settingsMTime = new IndexSettings();
    settingsMTime.setDocumentFilter(filter2MTime);
    
  2. Index documents – 超过截止日期的文件将被忽略。

    Index indexMTime = new Index("YOUR_OUTPUT_DIRECTORY\\ModificationTimeFilters", settingsMTime);
    indexMTime.add("YOUR_DOCUMENT_DIRECTORY");
    

文件路径过滤

将索引限制在特定文件夹或匹配模式的文件——适用于在特定目录层次结构中 include files by extension。

实现步骤

  1. Define file‑path filter – 使用 glob 或正则表达式模式匹配目录。

    DocumentFilter pathFilter = DocumentFilter.createPath("*.txt", "documents/");
    IndexSettings settingsPath = new IndexSettings();
    settingsPath.setDocumentFilter(pathFilter);
    
  2. Initialize index and add documents – 将路径过滤器与其他规则一起应用。

    Index indexPath = new Index("YOUR_OUTPUT_DIRECTORY\\FilePathFilter", settingsPath);
    indexPath.add("YOUR_DOCUMENT_DIRECTORY");
    

常见陷阱与技巧

  • Never mix absolute and relative paths 在同一过滤配置中不要混合绝对路径和相对路径——这可能导致意外排除。
  • Reset the IndexSettings 切换过滤集时重置 IndexSettings;否则之前的过滤器可能会保留。
  • Combine a length upper bound with an extension filter 对于大型集合,结合长度上限和扩展名过滤器以降低内存使用。
  • LoggingOptions 控制 GroupDocs.Search 的日志配置。
  • Enable logging (LoggingOptions.setEnabled(true)) 以查看文件被拒绝的原因。

常见问题

Q: 创建索引后,我可以更改过滤条件吗?
A: 可以。使用新的 DocumentFilter 重建索引,或使用带有更新设置的增量索引。

Q: java 文件扩展名过滤器是否适用于压缩档案(例如 ZIP)?
A: GroupDocs.Search 可以索引受支持的压缩档案格式,但扩展名过滤器仅适用于档案本身,而不是内部文件。使用嵌套过滤器以获得更深层的控制。

Q: 如何调试特定文件被排除的原因?
A: 启用库的日志 (LoggingOptions.setEnabled(true)) 并检查日志——它会报告哪个过滤器拒绝了每个文件。

Q: 是否可以将 java 文件扩展名过滤器与自定义正则表达式过滤器结合?
A: 完全可以。将正则表达式过滤器与扩展名过滤器一起放入 DocumentFilter.createAnd() 中。

Q: 添加大量过滤器会对性能产生什么影响?
A: 每个过滤器在索引期间会增加适度的开销,但通常通过减少索引数据而抵消成本。使用具有代表性的样本进行测试,以找到最佳平衡。


最后更新: 2026-09-06
测试环境: GroupDocs.Search 25.4 for Java
作者: GroupDocs

相关教程