Как настроить сеть с GroupDocs.Search Java
Введение
В современном цифровом ландшафте как настроить сеть настройки для масштабного поиска документов является критически важным навыком для любой компании. Традиционные решения часто сталкиваются с ограничениями производительности при росте набора данных, но GroupDocs.Search for Java предоставляет масштабируемую, высокопроизводительную основу. В этом руководстве мы пройдем всё, что необходимо для создания надёжной поисковой сети — от настройки портов до развертывания узлов, индексации документов, подписки на события и даже выполнения поиска по изображениям.
Быстрые ответы
- Какова основная цель поисковой сети? Распределять нагрузку индексации и запросов между несколькими узлами для лучшей масштабируемости и надёжности.
- Какой порт использует GroupDocs.Search по умолчанию? В примере используется порт 49120, но вы можете выбрать любой свободный порт.
- Можно ли добавлять или удалять узлы без простоя? лицензия для продакшн?** Для использования в продакшн требуется полная лицензия; пробные лицензии доступны для оценки.
- Поддерживается ли поиск по изображениям из коробки? Да — GroupDocs.Search предоставляет встроенное сравнение хешей изображений.
Что такое поис сеть — это набор взаимосвязанных экземпляров SearchNetworkNode, которые совместно используют информацию об индексации и отвечают на запросы. Такая архитектура позволяет работать с огромными коллекциями документов, сохраняя низкое время отклика.
Почему использовать GroupDocs.Search для Java?
- Масштабируемость: индексация и обработка запросов снижают задержку.
- **Гибкость Office‑файлы и поиск по изображениям. Базовые знания Java и сетевых концепций.
Требуемые библиотеки и зависимости
Добавьте репозиторий 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 — готова к продакшн, неограниченное использование.
Базовая инициализация и настройка
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.");
}
}
Руководство по реализации
Мы теперь подробно рассмотрим каждую основную задачу, используя понятные пошаговые фрагменты кода.
Как развернуть узлы в поисковой сети
Развёртывание нескольких узлов распределяет нагрузку и повышает отказоустойчивость.
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.");
}
}
Объяснение:
basePathуказывает на папку, содержащую ваши документы.basePort— это порт поисковой сети, на котором слушает каждый узел; измените его, чтобы избежать конфликтов.- Метод возвращает массив объектов
SearchNetworkNode, представляющих каждый активный узел.
Как подписаться на события
Подписка на события предоставляет живую информацию о состоянии узлов, прогрессе индексации и ошибках.
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.");
}
}
Объяснение:
nodes[0]рассматривается как мастер‑узел; вы также можете подписаться на каждый рабочий узел отдельно.
Как индексировать документы
Эффективная индексация — основа быстрых результатов поиска.
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.");
}
}
Объяснение:
addDirectoriesуказывает мастер‑узлу, какие папки сканировать и индексировать.- После индексации все узлы могут выполнять запросы к общему индексу.
Как выполнить поиск по изображению
GroupDocs.Search поддерживает сравнение хешей изображений, позволяя находить визуально похожие ресурсы.
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);
}
}
Объяснение:
SearchImage.createзагружает эталонное изображение.imageSearchвыполняет запрос на выбранном узле, позволяя максимальную разницу хеша 8 (регулируйте для более строгих или более свободных совпадений).
Как настроить сетевые порты
Если в вашей среде уже используется порт 49120, вы можете изменить его на любой свободный TCP‑порт:
int customPort = 50000; // Example of a custom port.
Configuration configuration = ConfiguringSearchNetwork.configure(basePath, customPort);
Убедитесь, что выбранный порт открыт в вашем брандмауэре и не используется другими сервисами и их устранение
| Симптом | Вероятная причина | Решение |
|---|---|---|
| Узлы не запускаются | Конфликт портов | Выберите другой basePort и обновите правила брандмауэра. |
| Индексация медленная | Недостаточная пропускная способность ввода‑вывода | Используйте SSD‑накопитель и включите инкрементальную индексацию. |
| Подписка на события не срабатывает | Отсутствует регистрация обработчика событий | Убедитесь, что SearchNetworkEvents.subscribe(node) вызывается до начала любой индексации. |
| Поиск по изображению не возвращает результаты | Разница хеша слишком мала | Увеличьте допустимую разницу хеша (например, с 4 до 8). |
Часто задаваемые вопросы
В: Как оптимизировать производительность индексации в сети GroupDocs.Search?
О: Используйте инкрементальную индексацию, храните индекс на быстрых SSD‑накопителях и выделяйте достаточный объём heap‑памяти для JVM.
В: Можно ли добавлять или удалять узлы без перезапуска всей поисковой сети?
О: Да — узлы могут динамически развертываться или выводиться из эксплуатации. После добавления узла вызовите SearchNetworkDeployment.deploy снова, чтобы обновить представление кластера.
В: Как подписка на события улучшает управление сетью?
О: Подписанные события предоставляют оповещения в реальном времени о изменениях статуса узлов, прогрессе индексации и ошибках, позволяя проводить проактивное устранение неполадок.
В: Можно ли одновременно искать в разных форматах документов?
О: Конечно. GroupDocs.Search поддерживает PDF, Word, Excel, PowerPoint, изображения и многие другие форматы в одном запросе.
**В: Насколько безопас.Search
**