missing placeholders: CODE_BLOCK_0 to CODE_BLOCK_18. Keep them.

Also there are no Hugo shortcodes.

Make sure to keep bold formatting.

Now produce final answer.# 精通 GroupDocs.Search 的 java 文件扩展名过滤器

管理日益增长的文档库可能很快变得难以应付,尤其是当您只需要对特定文件类型进行索引时。java 文件扩展名过滤器 让您可以告诉 GroupDocs.Search 精确包含或排除哪些扩展名,从而对索引流水线进行精细控制。在本指南中,我们将演示如何为 Java 设置 GroupDocs.Search,并展示如何将文件扩展名过滤与逻辑 AND、OR、NOT 运算符以及日期范围和路径过滤相结合。

快速回答

  • 什么是 java 文件扩展名过滤器? 在索引期间告诉 GroupDocs.Search 包含或排除哪些文件扩展名的配置。
  • 哪个库提供此功能? GroupDocs.Search for Java。
  • 我需要许可证吗? 免费试用可用于评估;生产环境需要完整许可证。
  • 我可以组合过滤器吗? 可以——您可以使用 AND、OR、NOT 逻辑链式组合扩展名、日期、大小和路径过滤器。
  • 它兼容 Maven 吗? 当然——将 GroupDocs.Search 依赖添加到您的 pom.xml 中。

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

java 文件扩展名过滤器 是一套在文件发送到索引引擎之前评估其扩展名的规则。通过指定诸如 .txt.pdf.epub 等扩展名,您可以 按扩展名包含文件按扩展名排除文件,从而保持索引的聚焦并使搜索结果更相关。

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

  • 性能: 跳过不需要的文件可减少 I/O 并加快索引速度。
  • 存储节省: 仅将相关文档存储在索引中,降低磁盘使用量。
  • 合规性: 防止意外索引机密或不受支持的文件类型。
  • 灵活性:date range filter java 功能结合,以针对在特定时间段内创建或修改的文件。

前置条件

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

必需的库和依赖

  • GroupDocs.Search for Java:版本 25.4 或更高
  • Java Development Kit (JDK):已安装兼容版本

环境设置

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

知识前提

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

为 Java 设置 GroupDocs.Search

要开始使用 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 – 获取用于生产的永久许可证。

基本初始化和设置

库添加后,初始化您的索引环境:

import com.groupdocs.search.*;

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

实现指南

下面我们将深入每种过滤器类型,解释 其重要性 并提供可直接复制到项目中的逐步代码示例。

文件扩展名过滤

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

概述

使用 DocumentFilter.createFileExtension 来白名单扩展名。

实现步骤

  1. 创建过滤器

    DocumentFilter filter = DocumentFilter.createFileExtension(".fb2", ".epub", ".txt");
    IndexSettings settings = new IndexSettings();
    settings.setDocumentFilter(filter);
    
  2. 初始化索引并添加文档

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

逻辑 NOT 过滤器

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

实现步骤

  1. 创建排除过滤器

    DocumentFilter filterNot = DocumentFilter.createFileExtension(".htm", ".html", ".pdf");
    DocumentFilter invertedFilter = DocumentFilter.createNot(filterNot);
    
  2. 应用到索引设置

    IndexSettings settingsNot = new IndexSettings();
    settingsNot.setDocumentFilter(invertedFilter);
    
  3. 添加文档

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

逻辑 AND 过滤器

组合多个条件——创建日期、扩展名和文件大小——以便 仅索引满足所有条件的文件

概述

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

实现步骤

  1. 定义过滤器

    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. 合并过滤器

    DocumentFilter finalFilterAnd = DocumentFilter.createAnd(filter1, filter2, filter3);
    IndexSettings settingsAnd = new IndexSettings();
    settingsAnd.setDocumentFilter(finalFilterAnd);
    
  3. 索引文档

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

逻辑 OR 过滤器

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

实现步骤

  1. 定义过滤器

    DocumentFilter txtFilter = DocumentFilter.createFileExtension(".txt");
    DocumentFilter notTxtFilter = DocumentFilter.createNot(txtFilter);
    
  2. 使用逻辑条件合并过滤器

    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. 完成 OR 过滤器

    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. 定义日期范围过滤器

    DocumentFilter filter3CTime = DocumentFilter.createCreationTimeRange(Utils.createDate(2017, 1, 1), Utils.createDate(2018, 6, 15));
    IndexSettings settingsCTime = new IndexSettings();
    settingsCTime.setDocumentFilter(filter3CTime);
    
  2. 索引文档

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

修改时间过滤器

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

实现步骤

  1. 定义过滤器

    DocumentFilter filter2MTime = DocumentFilter.createModificationTimeUpperBound(Utils.createDate(2018, 6, 15));
    IndexSettings settingsMTime = new IndexSettings();
    settingsMTime.setDocumentFilter(filter2MTime);
    
  2. 索引文档

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

文件路径过滤

将索引限制在特定文件夹或匹配特定模式的文件——适用于在特定目录层次结构中 按扩展名包含文件

实现步骤

  1. 定义文件路径过滤器

    DocumentFilter pathFilter = DocumentFilter.createPath("*.txt", "documents/");
    IndexSettings settingsPath = new IndexSettings();
    settingsPath.setDocumentFilter(pathFilter);
    
  2. 初始化索引并添加文档

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

常见陷阱与技巧

  • 切勿在同一过滤器配置中混合使用绝对路径和相对路径——这可能导致意外排除。
  • 在切换过滤器集时重置 IndexSettings;否则之前的过滤器可能仍然生效。
  • 将长度上限与扩展名过滤器结合,以在大型集合中保持低内存使用。
  • 启用日志记录 (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-02-21
测试环境: GroupDocs.Search 25.4 for Java
作者: GroupDocs