Добавление документов в индекс с поиском по чанкам на 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());
}
Почему использовать поиск по чанкам?
Поиск по чанкам разбивает огромные коллекции документов на управляемые части, уменьшая нагрузку на память и ускоряя время отклика. Это особенно полезно, когда:
- Юридические команды должны находить конкретные пункты в тысячах контрактов.
- Порталы поддержки клиентов должны мгновенно показывать релевантные статьи базы знаний.
- Исследователи просеивают обширные наборы данных без загрузки целых файлов в память.
Как этот подход повышает производительность поиска
Ищя меньшие чанки вместо целых файлов, движок может:
- Пропускать нерелевантные разделы на ранних этапах, экономя 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, или подключитесь к обратным вызовам логирования.
Ресурсы
- Документация: GroupDocs.Search for Java Docs
- Справочник API: GroupDocs.Search API Reference
- Скачать: GroupDocs.Search Releases
- GitHub: GroupDocs.Search GitHub Repository
- Бесплатная поддержка: GroupDocs Forum
- Временная лицензия: Obtain a Temporary License
Последнее обновление: 2026-02-21
Тестировано с: GroupDocs.Search 25.4 for Java
Автор: GroupDocs