Создание масштабируемой поисковой сети – Индексация документов с 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

  1. Настройка Maven: Добавьте репозиторий и зависимость, как показано выше, в ваш файл pom.xml.
  2. Прямое скачивание: В качестве альтернативы загрузите библиотеку с 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();
}

Практические применения

  1. Enterprise Search Solutions – Реализуйте поисковую сеть для обработки масштабных поисков документов на нескольких серверах.
  2. E‑commerce Platforms – Улучшите возможности поиска продуктов, распределяя задачи индексации по нескольким узлам.
  3. Content Management Systems (CMS) – Повышайте производительность извлечения и обновления контента в средах CMS.

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

  • Оптимизируйте развертывание узлов в зависимости от ресурсов вашей системы.
  • Регулярно контролируйте использование памяти, чтобы предотвратить утечки, особенно при работе с большими наборами данных.
  • Используйте параметры конфигурации для тонкой настройки операций индексации и поиска с целью повышения эффективности.

Распространённые проблемы и решения

ПроблемаТипичная причинаРешение
Конфликты портовbasePort уже используетсяИзмените basePort на доступный номер
Узел недоступенБрандмауэр или сетевые правилаОткройте необходимые порты и проверьте соединение
Индекс не обновляетсяНеправильный путь к документуПроверьте, что basePath указывает на правильный каталог
Высокое использование памятиИндексация большими партиямиИндексируйте документы небольшими партиями или увеличьте размер кучи

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

В: Как решить конфликты портов при развертывании узлов?
О: Измените переменную basePort в вашем конфигурационном коде на доступный порт.

В: Можно ли использовать GroupDocs.Search для реального времени индексации?
О: Да, он поддерживает индексацию в реальном времени при соответствующей конфигурации.

В: Какие распространённые проблемы возникают при развертывании узлов?
О: Часто возникают проблемы с сетевым подключением и неправильными настройками путей. Убедитесь, что все пути и порты правильно сконфигурированы.

В: Можно ли добавить документы в индекс после запуска сети?
О: Конечно. Вы можете вызвать index.add(...) на любом узле, и сеть автоматически распределит новую нагрузку.

В: Нужна ли лицензия для разработки и тестирования?
О: Временная пробная лицензия достаточна для тестирования; для продакшн‑использования требуется коммерческая лицензия.

Ресурсы

Следуя этому руководству, вы сможете эффективно добавлять документы в индекс и управлять надёжной, создавать масштабируемую поисковую сеть с помощью GroupDocs.Search для Java. Приятного кодирования!

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

Связанные руководства