Фильтрация расширений файлов 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.

Приобретение лицензии

  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 или regex шаблоны для сопоставления каталогов.

    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 при переключении наборов фильтров; иначе предыдущие фильтры могут сохраняться.
  • 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

Связанные руководства