Как индексировать документы с помощью GroupDocs.Search для Java
В современном мире, управляемом данными, как индексировать документы эффективно — это критически важный навык для любого Java‑разработчика, работающего с большими коллекциями файлов. Будь то обработка юридических контрактов, финансовых отчетов или внутренних докладов, правильно построенный поисковый индекс позволяет находить нужную информацию за секунды вместо часов ручного просмотра. Этот учебник проведёт вас через процесс создания поискового индекса, добавления документов и выполнения как текстовых, так и объектных запросов с помощью GroupDocs.Search для Java.
Быстрые ответы
- Что является первым шагом при индексировании документов? Создайте экземпляр
Index, указывающий на папку, где будут храниться файлы индекса. - Какой метод добавляет документы в индекс? Вызовите
index.add("PATH_TO_DOCUMENTS"), чтобы просканировать каталог и загрузить поддерживаемые файлы. - Могу ли я искать числовые диапазоны? Да — используйте текстовый запрос, например
"400 ~~ 4000"или объектный запрос черезSearchQuery.createNumericRangeQuery. МетодcreateNumericRangeQueryсоздает объект запроса числового диапазона. - Нужна ли лицензия? Бесплатная пробная версия подходит для оценки; коммерческая лицензия открывает полный набор функций и снимает ограничения использования.
- Какая версия Java требуется? JDK 8 или выше поддерживается.
Что такое индексирование документов с помощью GroupDocs.Search?
Индексирование документов создаёт хранилище токенов, доступных для поиска, для каждого файла, позволяя движку находить совпадения без чтения оригинальных файлов каждый раз. Этот предварительный шаг преобразует сырое содержание в оптимизированный индекс, который можно запросить за миллисекунды. Индекс хранит термины, позиции и метаданные, обеспечивая быстрый поиск фраз и близости по всем поддерживаемым типам документов.
Почему использовать GroupDocs.Search для Java?
Операции поиска обычно завершаются менее чем за 50 мс на коллекции из 10 000 файлов (в среднем 1 KB каждый) на стандартной VM с 2‑CPU и 8 GB ОЗУ. Библиотека поддерживает 30+ форматов ввода и вывода — включая PDF, DOCX, XLSX, PPTX, TXT и HTML — так что вы можете индексировать практически любой бизнес‑документ без дополнительных конвертеров. Гибкий API позволяет комбинировать запросы обычного текста, числовые диапазоны и сложные объектные запросы, а инкрементные обновления позволяют добавлять новые файлы без полной перестройки индекса.
Требования
- Maven установлен для управления зависимостями.
- IDE, например IntelliJ IDEA или Eclipse.
- Базовые знания Java (концепции ООП, обработка исключений).
Настройка GroupDocs.Search для Java
Настройка 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>
Прямое скачивание
Вы также можете скачать последнюю JAR‑файл с GroupDocs.Search for Java releases.
Шаги получения лицензии
- Free trial – исследуйте библиотеку без затрат.
- Temporary license – запросите краткосрочный ключ для расширенной оценки.
- Purchase – получите полную лицензию для использования в продакшене.
Базовая инициализация и настройка
Чтобы добавить документы в индекс, сначала создайте объект Index, указывающий на папку, где будут храниться файлы индекса:
Index — это основной класс, представляющий поисковый индекс на диске.
import com.groupdocs.search.Index;
// Initialize the index by specifying a directory path
Index index = new Index("YOUR_DOCUMENT_DIRECTORY\\output\\AdvancedUsage\\Searching\\NumericRangeSearch");
Эта строка создаёт (или открывает) индекс, готовый принимать документы.
Руководство по реализации
Создание и индексация документов
Как добавить документы в индекс
Метод add сканирует папку и сохраняет поисковые данные для каждого файла. Он рекурсивно обрабатывает каждый поддерживаемый документ, извлекает текст и метаданные и записывает токены в папку индекса, указанную ранее.
import com.groupdocs.search.Index;
// Initialize an index at the specified path
Index index = new Index("YOUR_DOCUMENT_DIRECTORY\\output\\AdvancedUsage\\Searching\\NumericRangeSearch");
// Add documents from a directory for indexing
index.add("YOUR_DOCUMENT_DIRECTORY");
- Parameters: Строка пути указывает на папку, содержащую файлы, которые вы хотите индексировать.
- Purpose: После этого шага индекс содержит токены из всех поддерживаемых типов документов, обеспечивая быстрый поиск по всей коллекции.
Поиск текстовым запросом
Как выполнить поиск числового диапазона с помощью текстового запроса
Вы можете искать, используя простую строку, определяющую диапазон. Движок интерпретирует оператор ~~ как «между» и возвращает все документы, содержащие числа в указанных пределах.
import com.groupdocs.search.*;
import com.groupdocs.search.results.*;
// Define a query for numeric values within a specific range
String query1 = "400 ~~ 4000";
// Execute text-based search on indexed data
SearchResult result1 = index.search(query1);
- Parameters: Строка запроса
"400 ~~ 4000"указывает движку искать числа от 400 до 4000. - Return value:
SearchResultсодержит список совпадающих документов и выделяет найденные фрагменты.
Поиск объектным запросом
Как использовать объектный запрос для числовых диапазонов
Объектные запросы дают программный контроль над критериями поиска, позволяя комбинировать несколько условий или динамически формировать запросы во время выполнения.
import com.groupdocs.search.*;
import com.groupdocs.search.results.*;
// Create a numeric range query object
SearchQuery query2 = SearchQuery.createNumericRangeQuery(400, 4000);
// Perform search using the query object
SearchResult result2 = index.search(query2);
- Parameters:
createNumericRangeQueryпринимает начальное и конечное целые числа. - Purpose: Этот метод идеален, когда необходимо фильтровать результаты по числовым полям, таким как суммы счетов, возраст или коды продуктов.
Практические применения
Вот некоторые реальные сценарии, где как индексировать документы становится решающим фактором:
- Legal document management – находите пункты, номера дел или даты в тысячах контрактов за секунды.
- Financial reporting – извлекайте транзакции, попадающие в определённый денежный диапазон, без сканирования каждой таблицы.
- Inventory tracking – ищите товары по серийным номерам, партиям или диапазонам SKU в распределённой файловой системе.
Интеграция GroupDocs.Search с базами данных, облачным хранилищем или очередями сообщений может ещё больше автоматизировать рабочие процессы с документами.
Соображения по производительности
- Regular index updates: Повторно запустите
index.addдля новых файлов, чтобы поддерживать индекс актуальным. - Resource management: Следите за использованием кучи; большие индексы выигрывают от настроек сборки мусора JVM.
- Query optimisation: Используйте объектные запросы для сложных фильтров, чтобы сократить ненужное сканирование и улучшить время отклика.
Распространённые проблемы и решения
| Issue | Why it happens | Fix |
|---|---|---|
| Search returns no results | Index not built or folder path incorrect | Verify index.add executed on the correct directory and that the index folder is writable. |
| OutOfMemoryError during indexing | Very large files or insufficient heap | Increase JVM -Xmx value or index files in smaller batches. |
| Unsupported file format | File type not recognised by GroupDocs.Search | Ensure the extension is among the supported list (PDF, DOCX, XLSX, PPTX, TXT, HTML, etc.). |
Часто задаваемые вопросы
Q: Как обновить существующий индекс новыми документами?
A: Вызовите index.add("NEW_DOCUMENT_PATH") ещё раз; библиотека объединит новые записи без пересоздания полного индекса.
Q: Может ли GroupDocs.Search работать с разными форматами файлов?
A: Да, поддерживает более 30 форматов — включая PDF, DOCX, XLSX, PPTX, TXT и HTML — так что вы можете индексировать практически любой бизнес‑документ.
Q: Каковы системные требования для использования GroupDocs.Search?
A: Среда выполнения Java 8+, минимум 2 GB ОЗУ для небольших коллекций (большие наборы выигрывают от 4 GB+), а также права чтения/записи к папке индекса.
Q: Как решить проблемы с производительностью поиска?
A: Держите индекс актуальным, профилируйте запросы и проверяйте настройки памяти JVM. Сокращение количества индексируемых полей или использование объектных запросов также ускорит выполнение.
Q: Поддерживает ли поиск синонимы или нечеткое совпадение?
A: Да, вы можете включить словари синонимов и нечеткий поиск через класс SearchOptions, расширяя совпадения без потери релевантности. Класс SearchOptions настраивает расширенное поведение поиска, такое как синонимы и нечеткое совпадение.
Последнее обновление: 2026-08-10
Тестировано с: GroupDocs.Search 25.4 for Java
Автор: GroupDocs