.

Make sure bullet points, lists, etc.

Let’s craft.

Овладение фильтром расширения файлов java в GroupDocs.Search

Управление растущим репозиторием документов может быстро стать непосильным, особенно когда нужно индексировать только определённые типы файлов. Фильтр расширения файлов java позволяет точно указать GroupDocs.Search, какие расширения включать или исключать, предоставляя полный контроль над конвейером индексации. В этом руководстве мы пройдём настройку GroupDocs.Search для Java и покажем, как комбинировать фильтрацию по расширениям с логическими операторами AND, OR и NOT, а также с фильтрами диапазона дат и путей.

Быстрые ответы

  • Что такое фильтр расширения файлов java? Конфигурация, указывающая GroupDocs.Search, какие расширения файлов включать или исключать во время индексации.
  • Какая библиотека предоставляет эту возможность? GroupDocs.Search для Java.
  • Нужна ли лицензия? Бесплатная пробная версия подходит для оценки; полная лицензия требуется для продакшн‑использования.
  • Можно ли комбинировать фильтры? Да — можно цепочкой соединять фильтры по расширениям, датам, размеру и пути с логикой AND, OR, NOT.
  • Совместим ли он с Maven? Абсолютно — добавьте зависимость GroupDocs.Search в ваш pom.xml.

Что такое фильтр расширения файлов java?

Фильтр расширения файлов java — это набор правил, который проверяет расширение каждого файла перед передачей его в движок индексации. Указывая такие расширения, как .txt, .pdf или .epub, вы можете включать файлы по расширению или исключать файлы по расширению, чтобы ваш индекс оставался сфокусированным, а результаты поиска — релевантными.

Почему стоит использовать фильтрацию по расширениям файлов с GroupDocs.Search?

  • Производительность: Пропуск ненужных файлов уменьшает ввод‑вывод и ускоряет индексацию.
  • Экономия места: В индексе хранятся только релевантные документы, что снижает использование диска.
  • Соответствие требованиям: Предотвращает случайную индексацию конфиденциальных или неподдерживаемых типов файлов.
  • Гибкость: Комбинируйте с фильтром диапазона дат java, чтобы выбирать файлы, созданные или изменённые в определённый период.

Предварительные требования

Перед началом убедитесь, что у вас есть следующее:

Требуемые библиотеки и зависимости

  • GroupDocs.Search для Java: версия 25.4 или новее
  • Java Development Kit (JDK): установлен совместимый вариант

Настройка окружения

  • Интегрированная среда разработки (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. Бесплатная пробная версия – исследуйте возможности без оплаты.
  2. Временная лицензия – получайте полный функционал на ограниченный срок.
  3. Покупка – приобретайте постоянную лицензию для продакшн‑использования.

Базовая инициализация и настройка

После добавления библиотеки инициализируйте окружение индексации:

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");
    

Фильтрация по пути файла

Ограничьте индексацию файлами, расположенными в конкретных папках или соответствующими шаблону — идеально для include files by extension в определённой иерархии каталогов.

Шаги реализации

  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)), чтобы увидеть, почему файл был отклонён.

Часто задаваемые вопросы

В: Можно ли изменить критерии фильтра после создания индекса?
О: Да. Перестройте индекс с новым DocumentFilter или используйте инкрементную индексацию с обновлёнными настройками.

В: Работает ли фильтр расширения файлов java с сжатыми архивами (например, ZIP)?
О: GroupDocs.Search может индексировать поддерживаемые форматы архивов, но фильтр расширения применяется к самому архиву, а не к вложенным файлам. Для более глубокого контроля используйте вложенные фильтры.

В: Как отладить, почему конкретный файл был исключён?
О: Включите логирование библиотеки (LoggingOptions.setEnabled(true)) и изучите журнал — в нём указано, какой фильтр отклонил каждый файл.

В: Можно ли комбинировать фильтр расширения файлов java с пользовательскими regex‑фильтрами?
О: Абсолютно. Оберните regex‑фильтр в DocumentFilter.createAnd() вместе с фильтром расширения.

В: Какое влияние на производительность оказывает добавление большого количества фильтров?
О: Каждый фильтр добавляет небольшие накладные расходы во время индексации, но снижение объёма индексируемых данных обычно перевешивает эти затраты. Протестируйте на репрезентативном наборе, чтобы найти оптимальный баланс.


Последнее обновление: 2026-02-21
Тестировано с: GroupDocs.Search 25.4 для Java
Автор: GroupDocs