Создание масштабируемой поисковой сети – Индексация документов с GroupDocs.Java
В этом руководстве вы узнаете как добавить документы в индекс и создать масштабируемую поисковую сеть с GroupDocs.Search для Java. Мы пройдем настройку поисковой сети, развертывание узлов и обработку событий, чтобы ваше приложение могло эффективно обрабатывать большие коллекции документов на нескольких серверах.
Быстрые ответы
- Что означает «добавить документы в индекс»? Это означает вставку файлов в поисковый индекс, чтобы их можно было быстро запросить.
- Какая библиотека предоставляет эту возможность? GroupDocs.Search для Java.
- Нужна ли лицензия? Доступна временная пробная лицензия; для продакшн‑использования требуется коммерческая лицензия.
- Можно ли масштабировать горизонтально? Да — развернув несколько экземпляров SearchNetworkNode.
- Какая версия Java требуется? JDK 8 или выше.
Что такое добавление документов в индекс?
Загрузите исходные файлы (PDF, DOCX, PPTX и т.д.) в движок GroupDocs.Search, который извлекает текст, создает таблицы частоты терминов и сохраняет их в файл индекса. Полученный индекс позволяет выполнять запросы по ключевым словам за доли секунды даже в коллекциях, содержащих сотни страниц.
Почему использовать GroupDocs.Search для Java в сетевой среде?
Распределяйте задачи индексации и поиска между несколькими узлами, уменьшайте задержку запросов, обрабатывая данные ближе к их источнику, и добавляйте или удаляйте узлы без простоя. Такая архитектура позволяет вам искать по нескольким серверам, сохраняя стабильную производительность.
Предварительные требования
- Java Development Kit (JDK) 8+ установлен.
- Maven для управления зависимостями.
- Базовое знакомство с Java и структурой Maven‑проекта.
Требуемые библиотеки, версии и зависимости
Чтобы использовать GroupDocs.Search для Java, добавьте следующее в ваш 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 Java releases.
Требования к настройке окружения
- JDK 8 или выше, установленный в вашей системе.
- Maven, установленный и настроенный, если вы используете Maven‑проект.
Требования к знаниям
- Базовое понимание программирования на Java.
- Знакомство с управлением зависимостями в Maven.
Настройка GroupDocs.Search для Java
- Настройка Maven: Добавьте репозиторий и зависимость, как показано выше, в ваш файл
pom.xml. - Прямое скачивание: В качестве альтернативы загрузите библиотеку с GroupDocs Search Java releases.
Приобретение лицензии
- Получите бесплатную пробную или временную лицензию, посетив веб‑сайт GroupDocs.
- Для полного доступа и поддержки рассмотрите возможность покупки коммерческой лицензии.
Базовая инициализация
Инициализируйте GroupDocs.Search в вашем Java‑приложении:
import com.groupdocs.search.*;
public class SearchSetup {
public static void main(String[] args) {
// Initialize an index
Index index = new Index("path/to/index/directory");
// Add documents to the index
index.add("path/to/documents");
System.out.println("GroupDocs.Search setup complete.");
}
}
Как добавить документы в индекс в поисковой сети?
Загружайте документы через любой узел сети; фреймворк автоматически распределяет нагрузку индексации, балансирует её и обновляет общий индекс в реальном времени. Каждый узел обрабатывает назначенные файлы, извлекает текст и записывает инкрементные изменения в центральный индекс, обеспечивая почти мгновенную доступность нового контента для поиска на всех узлах.
Функция 1: Настройка поисковой сети
Обзор
Настройка поисковой сети включает в себя конфигурацию узлов для эффективного управления и распределения задач поиска.
Шаг 1: Определить базовый путь и порт
Класс SearchNetworkNode представляет отдельный узел, участвующий в распределённом индексе.
String basePath = "YOUR_DOCUMENT_DIRECTORY/AdvancedUsage/Scaling/SearchNetworkNodeEvents/";
int basePort = 49140; // Change if necessary due to busy port issues
Шаг 2: Настроить сеть
NetworkConfiguration содержит общие настройки (базовый путь, порты, фактор репликации), которые каждый узел читает при запуске.
import com.groupdocs.search.scaling.*;
import com.groupdocs.search.scaling.configuring.*;
Configuration configuration = ConfiguringSearchNetwork.configure(basePath, basePort);
Функция 2: Развёртывание узлов поисковой сети
Обзор
Разворачивайте узлы для распределения и обработки операций поиска в вашей сети.
Шаг 1: Развернуть узлы с использованием конфигурации
Экземпляры SearchNetworkNode запускаются с тем же файлом конфигурации, что позволяет им обнаруживать друг друга через определённый диапазон базовых портов.
import com.groupdocs.search.scaling.*;
SearchNetworkNode[] nodes = SearchNetworkDeployment.deploy(basePath, basePort, configuration);
Функция 3: Подписка на события узлов
Обзор
Подписка на события узлов позволяет мониторить и реагировать на различные действия в поисковой сети.
Шаг 1: Определить метод подписки
NodeEventListener — это интерфейс, который вы реализуете для получения обратных вызовов о прогрессе индексации, ошибках и изменениях состояния узла.
import com.groupdocs.search.events.*;
import com.groupdocs.search.scaling.events.*;
public static void subscribe(SearchNetworkNode node) {
// Subscribe to IndexingCompleted event
node.getEvents().IndexingCompleted.add(new EventHandler() {
@Override
public void invoke(Object s, EventArgs e) {
System.out.println("Indexing completed.");
}
});
// Additional events can be subscribed similarly...
}
Шаг 2: Использовать метод подписки
Зарегистрируйте ваш слушатель на каждом узле, чтобы получать обратную связь в реальном времени во время больших пакетных операций.
SearchNetworkNode masterNode = nodes[0];
subscribe(masterNode);
Завершение работы узлов
Всегда корректно завершайте работу узлов, чтобы сбросить ожидающие записи и освободить сетевые сокеты.
for (SearchNetworkNode node : nodes) {
node.close();
}
Практические применения
- Enterprise Search Solutions – Реализуйте поисковую сеть для обработки масштабных поисков документов на нескольких серверах.
- E‑commerce Platforms – Улучшите возможности поиска продуктов, распределяя задачи индексации по нескольким узлам.
- Content Management Systems (CMS) – Повышайте производительность извлечения и обновления контента в средах CMS.
Соображения по производительности
- Оптимизируйте развертывание узлов в зависимости от ресурсов вашей системы.
- Регулярно контролируйте использование памяти, чтобы предотвратить утечки, особенно при работе с большими наборами данных.
- Используйте параметры конфигурации для тонкой настройки операций индексации и поиска с целью повышения эффективности.
Распространённые проблемы и решения
| Проблема | Типичная причина | Решение |
|---|---|---|
| Конфликты портов | basePort уже используется | Измените basePort на доступный номер |
| Узел недоступен | Брандмауэр или сетевые правила | Откройте необходимые порты и проверьте соединение |
| Индекс не обновляется | Неправильный путь к документу | Проверьте, что basePath указывает на правильный каталог |
| Высокое использование памяти | Индексация большими партиями | Индексируйте документы небольшими партиями или увеличьте размер кучи |
Часто задаваемые вопросы
В: Как решить конфликты портов при развертывании узлов?
О: Измените переменную basePort в вашем конфигурационном коде на доступный порт.
В: Можно ли использовать GroupDocs.Search для реального времени индексации?
О: Да, он поддерживает индексацию в реальном времени при соответствующей конфигурации.
В: Какие распространённые проблемы возникают при развертывании узлов?
О: Часто возникают проблемы с сетевым подключением и неправильными настройками путей. Убедитесь, что все пути и порты правильно сконфигурированы.
В: Можно ли добавить документы в индекс после запуска сети?
О: Конечно. Вы можете вызвать index.add(...) на любом узле, и сеть автоматически распределит новую нагрузку.
В: Нужна ли лицензия для разработки и тестирования?
О: Временная пробная лицензия достаточна для тестирования; для продакшн‑использования требуется коммерческая лицензия.
Ресурсы
- Documentation: GroupDocs Search Java Docs
- Справочник API: GroupDocs API Reference
- Скачать: Latest Release
- GitHub: GroupDocs.Search GitHub Repository
- Бесплатная поддержка: GroupDocs Forum
- Временная лицензия: Obtain a Temporary License
Следуя этому руководству, вы сможете эффективно добавлять документы в индекс и управлять надёжной, создавать масштабируемую поисковую сеть с помощью GroupDocs.Search для Java. Приятного кодирования!
Последнее обновление: 2026-05-22
Тестировано с: GroupDocs.Search 25.4 for Java
Автор: GroupDocs