Как настроить сеть GroupDocs Search для Java

В современном быстро меняющемся цифровом окружении навыки configure groupdocs search network являются необходимыми для любой организации, которой нужно быстро и надёжно искать по миллионам документов. Хорошо настроенная сеть поиска распределяет нагрузку индексации и запросов между несколькими JVM‑узлами, поддерживает низкое время отклика и гарантирует высокую доступность. Этот учебник проведёт вас через каждый шаг — от настройки Maven и активации лицензии до развертывания узлов, подписки на события, индексации документов и даже поиска по изображениям — чтобы вы могли создать готовую к продакшн сети GroupDocs.Search на Java.

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

  • Какова основная цель поисковой сети? Распределять нагрузку индексации и запросов между несколькими узлами для лучшей масштабируемости и надёжности.
  • Какой порт использует GroupDocs.Search по умолчанию? В примере используется порт 49120, но вы можете выбрать любой свободный порт.
  • Можно ли добавлять или удалять узлы без простоя? Да — узлы могут динамически развертываться или выводиться из эксплуатации.
  • Нужна ли лицензия для продакшн? Для использования в продакшн требуется полная лицензия; пробные лицензии доступны для оценки.
  • Поддерживается ли поиск по изображениям из коробки? Да — GroupDocs.Search предоставляет встроенное сравнение хешей изображений.

Что такое поисковая сеть?

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

Почему стоит использовать GroupDocs.Search для Java?

Оснастите ваше Java‑приложение поисковым движком, который может configure groupdocs search network за считанные минуты, масштабироваться горизонтально и поддерживать более 30 форматов файлов — включая PDF, DOCX, XLSX, PPTX и распространённые типы изображений. По результатам тестов, трёхузловой кластер может проиндексировать 500 000 документов менее чем за 30 минут на стандартном серверном оборудовании, при этом задержка запросов остаётся ниже 200 мс даже при высокой нагрузке.

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

  • JDK 8+ установлен на каждой машине, где будет работать узел.
  • IDE, например IntelliJ IDEA или Eclipse, для удобного управления проектом.
  • Maven для разрешения зависимостей.
  • Базовые знания сетевого программирования Java (TCP‑порты, брандмауэры) и концепций многопоточности.

Требуемые библиотеки и зависимости

Добавьте репозиторий GroupDocs и зависимость в ваш 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>

Либо скачайте последнюю версию по ссылке GroupDocs.Search for Java releases.

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

Установка через Maven

Приведённый выше фрагмент Maven автоматически добавит библиотеку в ваш проект.

Получение лицензии

  • Free Trial — изучите основные возможности без кредитной карты.
  • Temporary License — расширенный тестовый период для внутренних пилотных проектов.
  • Full License — готова к продакшн, неограниченное использование и приоритетная поддержка.

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

Класс SearchNetworkDeployment управляет созданием и обслуживанием поискового кластера, контролируя жизненный цикл узлов и общие ресурсы. Прежде чем взаимодействовать с любым узлом, необходимо создать объект SearchNetworkDeployment и указать ему общую папку индекса. Ниже приведённый блок кода (сохранённый из оригинального руководства) показывает минимальную инициализацию:

import com.groupdocs.search.*;

public class SearchSetup {
    public static void main(String[] args) {
        // Create an instance of Index with the path to store index data.
        String indexPath = "path/to/index";
        Index index = new Index(indexPath);
        
        System.out.println("GroupDocs.Search initialized successfully.");
    }
}

Руководство по реализации

Далее мы подробно рассмотрим каждую основную задачу, используя чёткие пошаговые объяснения, предшествующие оригинальным блокам кода.

Как развернуть узлы в поисковой сети

Развёртывание нескольких узлов распределяет нагрузку и повышает отказоустойчивость. SearchNetworkNode представляет отдельный экземпляр JVM, участвующий в поисковом кластере, обрабатывающий запросы индексации и поиска. Запустив несколько узлов на последовательных портах, вы создаёте устойчивую сеть, где каждый узел может обслуживать клиентские запросы и совместно использовать общий индекс.

public class SearchNetworkDeployment {
    public static void run() {
        String basePath = "YOUR_DOCUMENT_DIRECTORY";
        int basePort = 49120; // Change if necessary.
        Configuration configuration = ConfiguringSearchNetwork.configure(basePath, basePort);

        SearchNetworkNode[] nodes = SearchNetworkDeployment.deploy(basePath, basePort, configuration);
        
        System.out.println("Deployed " + nodes.length + " search network nodes.");
    }
}

Как подписаться на события

Подписка на события предоставляет в реальном времени информацию о состоянии узлов, прогрессе индексации и ошибках. Класс SearchNetworkEvents предоставляет набор обратных вызовов, которые срабатывают при значимых действиях, таких как завершение индексации, сбои узлов или пользовательские уведомления. Регистрация слушателей на мастер‑ или воркер‑узлах позволяет осуществлять мониторинг в реальном времени и автоматические реакции для поддержания стабильной работы сети.

public class NodeEventSubscription {
    public static void run() {
        String basePath = "YOUR_DOCUMENT_DIRECTORY";
        int basePort = 49120; // Adjust if needed.
        Configuration configuration = ConfiguringSearchNetwork.configure(basePath, basePort);
        SearchNetworkNode[] nodes = SearchNetworkDeployment.deploy(basePath, basePort, configuration);

        SearchNetworkEvents.subscribe(nodes[0]);
        
        System.out.println("Subscribed to events for the master node.");
    }
}

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

Эффективная индексация — основа быстрых результатов поиска. При добавлении каталогов в мастер‑узел движок сканирует каждый файл, извлекает поисковый контент и сохраняет его в общей структуре индекса. Этот процесс может выполняться инкрементально, обновляя только изменённые файлы, что снижает нагрузку ввода‑вывода и гарантирует, что запросы всегда отражают актуальные версии документов.

public class DocumentIndexing {
    public static void run() {
        String basePath = "YOUR_DOCUMENT_DIRECTORY";
        int basePort = 49120; // Change if there is a conflict.
        Configuration configuration = ConfiguringSearchNetwork.configure(basePath, basePort);
        SearchNetworkNode[] nodes = SearchNetworkDeployment.deploy(basePath, basePort, configuration);

        IndexingDocuments.addDirectories(nodes[0], "YOUR_DOCUMENT_DIRECTORY");
        
        System.out.println("Added directories to master node's index.");
    }
}

Как выполнить поиск по изображению

GroupDocs.Search поддерживает сравнение хешей изображений, позволяя находить визуально похожие ресурсы. Класс SearchImage инкапсулирует файл изображения и вычисляет перцептивный хеш, который можно сравнивать с хешами, хранящимися в индексе. Указывая максимальное различие хешей, вы задаёте допустимый порог визуального сходства, обеспечивая надёжное обнаружение дубликатов или схожих изображений в репозитории.

public class ImageSearch {
    public static void run() {
        String basePath = "YOUR_DOCUMENT_DIRECTORY";
        int basePort = 49120; // Modify if needed.
        Configuration configuration = ConfiguringSearchNetwork.configure(basePath, basePort);
        SearchNetworkNode[] nodes = SearchNetworkDeployment.deploy(basePath, basePort, configuration);

        SearchImage searchImage = SearchImage.create("YOUR_DOCUMENT_DIRECTORY/ic_arrow_back_black_18dp.png");

        imageSearch(nodes[0], searchImage, 8);
    }
}

Как настроить сетевые порты

Если в вашей среде уже используется порт 49120, вы можете изменить его на любой свободный TCP‑порт. Параметр basePort определяет начальный номер порта для кластера, а каждый последующий узел автоматически увеличивает это значение. Убедитесь, что выбранный порт открыт в брандмауэре, не занят другими сервисами и одинаково настроен на всех узлах для обеспечения беспрепятственной связи.

int customPort = 50000; // Example of a custom port.
Configuration configuration = ConfiguringSearchNetwork.configure(basePath, customPort);

Распространённые проблемы и их устранение

СимптомВозможная причинаРешение
Узлы не запускаютсяКонфликт портовВыберите другой basePort и обновите правила брандмауэра.
Индексация медленнаяНедостаточная пропускная способность ввода‑выводаИспользуйте SSD‑накопитель и включите инкрементальную индексацию.
Подписка на события не срабатываетОтсутствует регистрация обработчика событийУбедитесь, что SearchNetworkEvents.subscribe(node) вызывается до начала любой индексации.
Поиск по изображению не возвращает результатыСлишком низкое различие хешейУвеличьте допустимое различие хешей (например, с 4 до 8).

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

Q: Как оптимизировать производительность индексации в сети GroupDocs.Search?
A: Используйте инкрементальную индексацию, храните индекс на быстрых SSD‑накопителях и выделяйте достаточный объём heap‑памяти для JVM.

Q: Можно ли добавлять или удалять узлы без перезапуска всей поисковой сети?
A: Да — узлы могут динамически развертываться или выводиться из эксплуатации. После добавления узла вызовите SearchNetworkDeployment.deploy снова, чтобы обновить представление кластера.

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

Q: Можно ли одновременно искать по разным форматам документов?
A: Конечно. GroupDocs.Search поддерживает PDF, Word, Excel, PowerPoint, изображения и многие другие форматы в одном запросе.

Q: Насколько безопасны данные в сети GroupDocs.Search?
A: Безопасность зависит от вашей инфраструктуры. Реализуйте SSL/TLS для коммуникации между узлами, ограничьте доступ к сети и следуйте лучшим практикам защиты данных.


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

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