Добавление документов в индекс с поиском по чанкам на Java

В современных приложениях, которым необходимо добавлять документы в индекс быстро и затем выполнять быстрые запросы по чанкам, вам понадобится решение, которое масштабируется без переполнения памяти. Этот учебник проведет вас через настройку GroupDocs.Search для Java, добавление нескольких папок с документами и конфигурацию движка для повышения производительности поиска, одновременно контролируя использование java search index memory. Независимо от того, индексируете ли вы юридические контракты, заявки в службу поддержки или научные статьи, приведённые ниже шаги дадут вам готовую к продакшену реализацию.

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

  • Какой первый шаг? Создайте папку для поискового индекса.
  • Как включить множество файлов? Используйте index.add() для каждой папки с документами.
  • Какая опция включает поиск по чанкам? options.setChunkSearch(true).
  • Могу ли я продолжить поиск после первого чанка? Да, вызовите index.searchNext() с токеном.
  • Нужна ли лицензия? Бесплатная пробная версия или временная лицензия подходят для разработки; полная лицензия требуется для продакшена.

Что вы узнаете

  • Как создать поисковый индекс в указанной папке.
  • Шаги для добавления документов в индекс из нескольких мест.
  • Настройка параметров поиска для включения поиска по чанкам.
  • Выполнение начального и последующего поиска по чанкам.
  • Реальные сценарии, где поиск документов по чанкам проявляет себя.

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

  • Необходимые библиотеки: GroupDocs.Search for Java 25.4 or later.
  • Настройка окружения: Установлен совместимый Java Development Kit (JDK).
  • Требования к знаниям: Базовое программирование на Java и знакомство с Maven.

Настройка GroupDocs.Search для Java

Для начала интегрируйте GroupDocs.Search в ваш проект с помощью Maven:

<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.

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

Чтобы опробовать GroupDocs.Search:

  • Free Trial – протестировать основные функции без обязательств.
  • Temporary License – расширенный доступ для разработки.
  • Purchase – полная лицензия для использования в продакшене.

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

Создайте индекс в папке, где будет храниться поисковая информация:

import com.groupdocs.search.*;

public class CreateIndex {
    public static void main(String[] args) {
        String indexFolder = "YOUR_DOCUMENT_DIRECTORY\\output\\AdvancedUsage\\Searching\\SearchByChunks";
        // Creating an index in the specified folder
        Index index = new Index(indexFolder);
    }
}

Как добавить документы в индекс

Теперь, когда индекс существует, следующий логичный шаг — добавить документы в индекс из мест, где хранятся ваши файлы.

1. Создание индекса

Обзор: Настройте каталог для поискового индекса.

String indexFolder = "YOUR_DOCUMENT_DIRECTORY\\output\\AdvancedUsage\\Searching\\SearchByChunks";
Index index = new Index(indexFolder);

2. Добавление документов в индекс

Обзор: Загрузите файлы из нескольких исходных папок.

String documentsFolder1 = "YOUR_DOCUMENT_DIRECTORY";
String documentsFolder2 = "YOUR_DOCUMENT_DIRECTORY";
String documentsFolder3 = "YOUR_DOCUMENT_DIRECTORY";
index.add(documentsFolder1);
index.add(documentsFolder2);
index.add(documentsFolder3);

3. Настройка параметров поиска для поиска по чанкам

Включите поиск по чанкам, изменив объект options.

SearchOptions options = new SearchOptions();
options.setChunkSearch(true);

4. Выполнение начального поиска по чанкам

Запустите первый запрос, используя параметры с включённым поиском по чанкам.

String query = "invitation";
SearchResult result = index.search(query, options);

5. Продолжение поиска по чанкам

Итерируйте оставшиеся чанки, пока поиск не завершится.

while (result.getNextChunkSearchToken() != null) {
    result = index.searchNext(result.getNextChunkSearchToken());
}

Почему использовать поиск по чанкам?

Поиск по чанкам разбивает огромные коллекции документов на управляемые части, уменьшая нагрузку на память и ускоряя время отклика. Это особенно полезно, когда:

  1. Юридические команды должны находить конкретные пункты в тысячах контрактов.
  2. Порталы поддержки клиентов должны мгновенно показывать релевантные статьи базы знаний.
  3. Исследователи просеивают обширные наборы данных без загрузки целых файлов в память.

Как этот подход повышает производительность поиска

Ищя меньшие чанки вместо целых файлов, движок может:

  • Пропускать нерелевантные разделы на ранних этапах, экономя CPU‑циклы.
  • Хранить в памяти только активный чанк, что напрямую снижает потребление java search index memory.
  • Параллелить обработку чанков на многопроцессорных машинах для более быстрых результатов.

Управление java search index memory

Хотя поиск по чанкам уже уменьшает объём памяти, вы можете дополнительно настроить JVM:

  • Выделите достаточный объём кучи (-Xmx2g или больше) в зависимости от размера индекса.
  • Вызовите index.optimize() после массового добавления, чтобы сжать структуру индекса.
  • Отслеживайте паузы GC с помощью инструментов, таких как VisualVM, чтобы избежать всплесков задержек.

Соображения по производительности

  • Memory Management – Выделяйте достаточный объём кучи (-Xmx) для больших индексов.
  • Resource Monitoring – Следите за загрузкой CPU во время индексации и поиска.
  • Index Maintenance – Периодически перестраивайте или очищайте индекс, чтобы избавиться от устаревших данных.

Распространённые ошибки и устранение неполадок

ПроблемаПочему происходитРешение
OutOfMemoryError во время индексацииРазмер кучи слишком малУвеличьте размер кучи JVM (-Xmx2g или больше)
Нет результатовТокен чанка не обработанУбедитесь, что цикл while выполняется, пока getNextChunkSearchToken() не станет null
Низкая производительность поискаИндекс не оптимизированВыполните index.optimize() после массового добавления

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

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

Q: Как обновить индекс новыми файлами?
A: Просто вызовите index.add() с путём к новым документам; индекс автоматически их включит.

Q: Может ли GroupDocs.Search работать с разными форматами файлов?
A: Да, он поддерживает PDF, DOCX, XLSX, PPTX и многие другие распространённые форматы.

Q: Какие типичные узкие места в производительности?
A: Ограничения памяти и не оптимизированные индексы — самые распространённые; выделяйте достаточный объём кучи и регулярно оптимизируйте индекс.

Q: Где можно найти более подробную документацию?
A: Посетите официальную GroupDocs.Search Documentation для подробных руководств и справочников API.

Q: Работает ли поиск по чанкам с зашифрованными PDF?
A: Да, при условии, что вы передаёте пароль через соответствующий перегруженный метод API.

Q: Как можно отслеживать прогресс индексации?
A: Используйте перегрузку Index.add(), возвращающую объект Progress, или подключитесь к обратным вызовам логирования.

Ресурсы


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