Фильтрация расширений файлов java с GroupDocs.Search
В этом подробном руководстве вы узнаете, как filter file extensions java при индексации документов с помощью GroupDocs.Search. К концу руководства вы сможете включать только нужные типы файлов, исключать нежелательные форматы и комбинировать эти правила с фильтрами диапазона дат и путей, используя логические операторы AND, OR и NOT. Такой подход делает ваш индекс компактным, ускоряет поиск и помогает соблюдать политики обработки данных.
Быстрые ответы
- Что такое фильтр расширений файлов java? Это правило, которое указывает GroupDocs.Search, какие расширения файлов включать или исключать при индексации.
- Какая библиотека предоставляет эту функцию? GroupDocs.Search for Java.
- Нужна ли лицензия? Бесплатная пробная версия подходит для оценки; полная лицензия требуется для продакшн.
- Можно ли комбинировать фильтры? Да — вы можете последовательно применять фильтры расширений, дат, размеров и путей, используя логические операции AND, OR, NOT.
- Совместим ли он с Maven? Абсолютно — добавьте зависимость GroupDocs.Search в ваш
pom.xml.
Что такое фильтр расширений файлов java?
Фильтр java file extension filter — это набор правил, который оценивает расширение каждого файла перед отправкой в движок индексации. Указывая такие расширения, как .txt, .pdf или .epub, вы можете include files by extension или exclude files by extension, чтобы ваш индекс оставался сфокусированным, а результаты поиска — релевантными.
Зачем использовать фильтрацию по расширениям файлов с GroupDocs.Search?
Фильтрация по расширениям файлов повышает эффективность индексации, исключая нерелевантные форматы, уменьшает требования к хранилищу и помогает соблюдать правила соответствия, предотвращая попадание нежелательного контента в индекс. Она также обеспечивает более быстрые ответы на запросы, поскольку поисковый движок обрабатывает меньший, более релевантный набор данных.
- Производительность: Пропуск нежелательных файлов уменьшает ввод‑вывод и ускоряет индексацию до 40 % в крупных репозиториях.
- Экономия места: В индекс сохраняются только релевантные документы, что снижает использование диска в среднем на 30 %.
- Соответствие: Предотвращает случайную индексацию конфиденциальных или неподдерживаемых типов файлов.
- Гибкость: Комбинируйте с функциями date range filter java, чтобы выбирать файлы, созданные или изменённые в определённые периоды.
Предварительные требования
Прежде чем начать, убедитесь, что у вас есть следующее:
Требуемые библиотеки и зависимости
- GroupDocs.Search for Java – версия 25.4 или новее (поддерживает более 60 форматов ввода).
- Java Development Kit (JDK) – любая совместимая версия (8 или новее).
Настройка окружения
- Integrated Development Environment (IDE): IntelliJ IDEA, Eclipse или любой IDE, совместимый с Maven.
Требования к знаниям
- Базовое программирование на Java.
- Знание работы с файловым вводом/выводом в Java.
- Понимание регулярных выражений и работы с датой‑временем.
Настройка GroupDocs.Search для 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.
Приобретение лицензии
- Free trial – исследуйте возможности без оплаты.
- Temporary license – получите полный функционал на ограниченный период.
- Purchase – приобретите постоянную лицензию для использования в продакшн.
Базовая инициализация и настройка
После добавления библиотеки инициализируйте окружение индексации. Класс IndexSettings содержит все параметры конфигурации, включая фильтры.
import com.groupdocs.search.*;
String indexFolder = "YOUR_OUTPUT_DIRECTORY";
Index index = new Index(indexFolder);
Руководство по реализации
Далее мы подробно рассмотрим каждый тип фильтра, объясняя why it matters и предоставляя пошаговые инструкции, которые вы можете скопировать в свой проект.
Фильтрация по расширениям файлов
Фильтруйте файлы по их расширениям во время индексации. Это идеально, когда нужно обрабатывать только электронные книги (.fb2, .epub) и простые текстовые файлы (.txt).
Обзор
DocumentFilter.createFileExtension создает белый список расширений.
Шаги реализации
Create filter – определите расширения, которые нужно оставить.
DocumentFilter filter = DocumentFilter.createFileExtension(".fb2", ".epub", ".txt"); IndexSettings settings = new IndexSettings(); settings.setDocumentFilter(filter);Initialize index and add documents – примените фильтр при построении
IndexSettings.Index index = new Index("YOUR_OUTPUT_DIRECTORY\\FileExtensionFilter", settings); index.add("YOUR_DOCUMENT_DIRECTORY");
Логический NOT‑фильтр
Исключайте определённые расширения, такие как веб‑страницы и PDF, когда они не нужны в вашем поисковом сценарии.
Шаги реализации
Create exclusion filter – укажите расширения, которые следует отклонять.
DocumentFilter filterNot = DocumentFilter.createFileExtension(".htm", ".html", ".pdf"); DocumentFilter invertedFilter = DocumentFilter.createNot(filterNot);Apply to index settings – комбинируйте NOT‑фильтр с другими правилами.
IndexSettings settingsNot = new IndexSettings(); settingsNot.setDocumentFilter(invertedFilter);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 объединяет несколько фильтров в одно правило.
Шаги реализации
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);Combine filters – используйте оператор AND, чтобы требовать выполнения всех условий.
DocumentFilter finalFilterAnd = DocumentFilter.createAnd(filter1, filter2, filter3); IndexSettings settingsAnd = new IndexSettings(); settingsAnd.setDocumentFilter(finalFilterAnd);Index documents – передайте комбинированный фильтр в конвейер индексации.
Index indexAnd = new Index("YOUR_OUTPUT_DIRECTORY\\LogicalAndFilter", settingsAnd); indexAnd.add("YOUR_DOCUMENT_DIRECTORY");
Логический OR‑фильтр
Включайте файлы, удовлетворяющие any из указанных условий — полезно, когда нужно захватить как небольшие текстовые файлы, так и более крупные нетекстовые файлы.
Шаги реализации
Define filters – создайте отдельные фильтры для каждой альтернативной условия.
DocumentFilter txtFilter = DocumentFilter.createFileExtension(".txt"); DocumentFilter notTxtFilter = DocumentFilter.createNot(txtFilter);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);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.
Шаги реализации
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);Index documents – индексируются только файлы, чьи метки времени создания находятся в указанном диапазоне.
Index indexCTime = new Index("YOUR_OUTPUT_DIRECTORY\\CreationTimeFilters", settingsCTime); indexCTime.add("YOUR_DOCUMENT_DIRECTORY");
Фильтры по времени изменения
Исключайте файлы, изменённые после определённой даты отсечения.
Шаги реализации
Define filter – задайте максимальную метку времени изменения.
DocumentFilter filter2MTime = DocumentFilter.createModificationTimeUpperBound(Utils.createDate(2018, 6, 15)); IndexSettings settingsMTime = new IndexSettings(); settingsMTime.setDocumentFilter(filter2MTime);Index documents – файлы, новее даты отсечения, игнорируются.
Index indexMTime = new Index("YOUR_OUTPUT_DIRECTORY\\ModificationTimeFilters", settingsMTime); indexMTime.add("YOUR_DOCUMENT_DIRECTORY");
Фильтрация по пути к файлу
Ограничьте индексацию файлами, находящимися в определённых папках или соответствующими шаблону — идеально для include files by extension в определённой иерархии каталогов.
Шаги реализации
Define file‑path filter – используйте glob или regex шаблоны для сопоставления каталогов.
DocumentFilter pathFilter = DocumentFilter.createPath("*.txt", "documents/"); IndexSettings settingsPath = new IndexSettings(); settingsPath.setDocumentFilter(pathFilter);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при переключении наборов фильтров; иначе предыдущие фильтры могут сохраняться. - Combine a length upper bound with an extension filter для больших коллекций, чтобы снизить использование памяти.
- LoggingOptions управляет конфигурацией логирования для GroupDocs.Search.
- Enable logging (
LoggingOptions.setEnabled(true)) чтобы увидеть, почему файл был отклонён.
Часто задаваемые вопросы
Q: Можно ли изменить критерии фильтра после создания индекса?
A: Да. Перестройте индекс с новым DocumentFilter или используйте инкрементную индексацию с обновлёнными настройками.
Q: Работает ли java file extension filter с сжатыми архивами (например, ZIP)?
A: GroupDocs.Search может индексировать поддерживаемые форматы архивов, но фильтр расширений применяется к самому архиву, а не к вложенным файлам. Используйте вложенные фильтры для более детального контроля.
Q: Как отладить, почему конкретный файл был исключён?
A: Включите логирование библиотеки (LoggingOptions.setEnabled(true)) и просмотрите журнал — он сообщает, какой фильтр отклонил каждый файл.
Q: Можно ли комбинировать java file extension filter с пользовательскими regex‑фильтрами?
A: Абсолютно. Оберните regex‑фильтр в DocumentFilter.createAnd() вместе с фильтром расширений.
Q: Какое влияние на производительность оказывает добавление большого количества фильтров?
A: Каждый фильтр добавляет небольшие накладные расходы во время индексации, но сокращение объёма индексируемых данных обычно перевешивает затраты. Протестируйте на репрезентативной выборке, чтобы найти оптимальный баланс.
Last Updated: 2026-09-06
Tested With: GroupDocs.Search 25.4 for Java
Author: GroupDocs