Filter file extensions java with GroupDocs.Search
In this comprehensive tutorial you’ll learn how to filter file extensions java when indexing documents with GroupDocs.Search. By the end of the guide you’ll be able to include only the file types you need, exclude unwanted formats, and combine those rules with date‑range and path filters using logical AND, OR, and NOT operators. This approach keeps your index lean, speeds up searches, and helps you stay compliant with data‑handling policies.
Quick answers
- What is the java file extension filter? It is a rule that tells GroupDocs.Search which file extensions to include or exclude during indexing.
- Which library provides this feature? GroupDocs.Search for Java.
- Do I need a license? A free trial works for evaluation; a full license is required for production.
- Can I combine filters? Yes – you can chain extension, date, size, and path filters with AND, OR, NOT logic.
- Is it Maven‑compatible? Absolutely – add the GroupDocs.Search dependency to your
pom.xml.
What is a java file extension filter?
A java file extension filter is a rule set that evaluates each file’s extension before it’s sent to the indexing engine. By specifying extensions like .txt, .pdf, or .epub, you can include files by extension or exclude files by extension to keep your index focused and your search results relevant.
Why use file‑extension filtering with GroupDocs.Search?
File‑extension filtering improves indexing efficiency by excluding irrelevant formats, reduces storage requirements, and helps meet compliance rules by preventing unwanted content from entering the index. It also enables faster query responses because the search engine processes a smaller, more relevant dataset.
- Performance: Skipping unwanted files reduces I/O and speeds up indexing by up to 40 % on large repositories.
- Storage savings: Only relevant documents are stored in the index, lowering disk usage by an average of 30 %.
- Compliance: Prevent accidental indexing of confidential or unsupported file types.
- Flexibility: Combine with date range filter java features to target files created or modified within specific periods.
Prerequisites
Before we begin, ensure you have the following:
Required libraries and dependencies
- GroupDocs.Search for Java – version 25.4 or later (supports 60+ input formats).
- Java Development Kit (JDK) – any compatible version (8 or newer).
Environment setup
- Integrated Development Environment (IDE): IntelliJ IDEA, Eclipse, or any Maven‑compatible IDE.
Knowledge prerequisites
- Basic Java programming.
- Familiarity with file I/O in Java.
- Understanding of regular expressions and date‑time handling.
Setting up GroupDocs.Search for Java
To start using GroupDocs.Search, you need to include it as a dependency in your project.
Maven configuration
Add the following repository and dependency configuration to your pom.xml file:
<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>
Direct download
Alternatively, download the latest version directly from GroupDocs.Search for Java releases.
License acquisition
- Free trial – explore the features without cost.
- Temporary license – get full functionality for a limited period.
- Purchase – obtain a permanent license for production use.
Basic initialization and setup
Once the library is added, initialize your indexing environment. The IndexSettings class holds all configuration options, including filters.
import com.groupdocs.search.*;
String indexFolder = "YOUR_OUTPUT_DIRECTORY";
Index index = new Index(indexFolder);
Implementation guide
Below we dive into each filter type, explaining why it matters and providing step‑by‑step instructions you can copy into your project.
File extension filtering
Filter files by their extensions during indexing. This is perfect when you only want to process e‑books (.fb2, .epub) and plain‑text files (.txt).
Overview
DocumentFilter.createFileExtension creates a whitelist of extensions.
Implementation steps
Create filter – define the extensions you want to keep.
DocumentFilter filter = DocumentFilter.createFileExtension(".fb2", ".epub", ".txt"); IndexSettings settings = new IndexSettings(); settings.setDocumentFilter(filter);Initialize index and add documents – apply the filter when constructing the
IndexSettings.Index index = new Index("YOUR_OUTPUT_DIRECTORY\\FileExtensionFilter", settings); index.add("YOUR_DOCUMENT_DIRECTORY");
Logical NOT filter
Exclude specific extensions, such as web pages and PDFs, when they are not needed for your search scenario.
Implementation steps
Create exclusion filter – specify extensions to reject.
DocumentFilter filterNot = DocumentFilter.createFileExtension(".htm", ".html", ".pdf"); DocumentFilter invertedFilter = DocumentFilter.createNot(filterNot);Apply to index settings – combine the NOT filter with other rules.
IndexSettings settingsNot = new IndexSettings(); settingsNot.setDocumentFilter(invertedFilter);Add documents – only files that pass the combined filter are indexed.
Index indexNot = new Index("YOUR_OUTPUT_DIRECTORY\\LogicalNotFilter", settingsNot); indexNot.add("YOUR_DOCUMENT_DIRECTORY");
Logical AND filter
Combine several conditions—creation date, extension, and file size—so that only files that meet all criteria are indexed.
Overview
DocumentFilter.createAnd merges multiple filters into a single rule.
Implementation steps
Define filters – create individual filters for each condition.
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);Combine filters – use the AND operator to require all conditions.
DocumentFilter finalFilterAnd = DocumentFilter.createAnd(filter1, filter2, filter3); IndexSettings settingsAnd = new IndexSettings(); settingsAnd.setDocumentFilter(finalFilterAnd);Index documents – feed the combined filter to the indexing pipeline.
Index indexAnd = new Index("YOUR_OUTPUT_DIRECTORY\\LogicalAndFilter", settingsAnd); indexAnd.add("YOUR_DOCUMENT_DIRECTORY");
Logical OR filter
Include files that satisfy any of the specified conditions—useful when you want to capture both small text files and larger non‑text files.
Implementation steps
Define filters – create separate filters for each alternative condition.
DocumentFilter txtFilter = DocumentFilter.createFileExtension(".txt"); DocumentFilter notTxtFilter = DocumentFilter.createNot(txtFilter);Combine filters with logical conditions – use the OR operator.
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);Finalize OR filter – attach the combined filter to the index configuration.
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");
Creation time filters
Target files created within a specific period—a classic date range filter java scenario.
Implementation steps
Define date‑range filter – specify start and end dates.
DocumentFilter filter3CTime = DocumentFilter.createCreationTimeRange(Utils.createDate(2017, 1, 1), Utils.createDate(2018, 6, 15)); IndexSettings settingsCTime = new IndexSettings(); settingsCTime.setDocumentFilter(filter3CTime);Index documents – only files whose creation timestamps fall inside the range are indexed.
Index indexCTime = new Index("YOUR_OUTPUT_DIRECTORY\\CreationTimeFilters", settingsCTime); indexCTime.add("YOUR_DOCUMENT_DIRECTORY");
Modification time filters
Exclude files that were modified after a certain cutoff date.
Implementation steps
Define filter – set the maximum modification timestamp.
DocumentFilter filter2MTime = DocumentFilter.createModificationTimeUpperBound(Utils.createDate(2018, 6, 15)); IndexSettings settingsMTime = new IndexSettings(); settingsMTime.setDocumentFilter(filter2MTime);Index documents – files newer than the cutoff are ignored.
Index indexMTime = new Index("YOUR_OUTPUT_DIRECTORY\\ModificationTimeFilters", settingsMTime); indexMTime.add("YOUR_DOCUMENT_DIRECTORY");
File path filtering
Restrict indexing to files located in particular folders or matching a pattern—ideal for include files by extension within a specific directory hierarchy.
Implementation steps
Define file‑path filter – use glob or regex patterns to match directories.
DocumentFilter pathFilter = DocumentFilter.createPath("*.txt", "documents/"); IndexSettings settingsPath = new IndexSettings(); settingsPath.setDocumentFilter(pathFilter);Initialize index and add documents – apply the path filter alongside other rules.
Index indexPath = new Index("YOUR_OUTPUT_DIRECTORY\\FilePathFilter", settingsPath); indexPath.add("YOUR_DOCUMENT_DIRECTORY");
Common pitfalls & tips
- Never mix absolute and relative paths in the same filter configuration – it can lead to unexpected exclusions.
- Reset the
IndexSettingswhen switching filter sets; otherwise previous filters may persist. - Combine a length upper bound with an extension filter for large collections to keep memory usage low.
- LoggingOptions controls the logging configuration for GroupDocs.Search.
- Enable logging (
LoggingOptions.setEnabled(true)) to see why a file was rejected.
Frequently asked questions
Q: Can I change the filter criteria after the index is created?
A: Yes. Rebuild the index with a new DocumentFilter or use incremental indexing with updated settings.
Q: Does the java file extension filter work on compressed archives (e.g., ZIP)?
A: GroupDocs.Search can index supported archive formats, but the extension filter applies to the archive itself, not the inner files. Use nested filters for deeper control.
Q: How do I debug why a particular file was excluded?
A: Enable the library’s logging (LoggingOptions.setEnabled(true)) and inspect the log – it reports which filter rejected each file.
Q: Is it possible to combine the java file extension filter with custom regex filters?
A: Absolutely. Wrap a regex filter inside DocumentFilter.createAnd() alongside the extension filter.
Q: What performance impact does adding many filters have?
A: Each filter adds a modest overhead during indexing, but the reduction in indexed data usually outweighs the cost. Test with a representative sample to find the optimal balance.
Last Updated: 2026-09-06
Tested With: GroupDocs.Search 25.4 for Java
Author: GroupDocs