如何使用 GroupDocs.Search Java 配置网络

介绍

在当今的数字环境中增长时常常遇到性能瓶颈,但 GroupDocs.Search for Java 为您提供了可扩展的高性能基础。在本教程中,我们将逐步演示如何建立稳健的搜索网络——从配置端口、部署节点、索引文档、订阅事件,到执行图像搜索。

快速答案

  • 搜索网络的主要目的是什么? 将索引和查询负载分布到多个节点,以获得更好的可扩展性和可靠性。
  • GroupDocs.Search 默认使用哪个端口? 示例使用端口 49120,但您可以选择任何空闲端口。
  • 我可以在不中断的情况下添加或移除节点吗? 可以——节点可以动态部署或退役。
  • 生产环境需要许可证吗? 生产使用需要完整许可证;评估可使用试用许可证。
  • 是否开箱即支持图像搜索? 是的——GroupDocs.Search 提供内置的图像哈希? 搜索网络是一组相互连接的 SearchNetworkNode 实例的集合,它们共享索引信息并协同响应查询。这种架构让您能够处理海量文档集合,同时保持低响应时间。

为什么使用 GroupDocs.Search for Java?

  • 可扩展性: 随着存储库增长添加节点。
  • 性能: 并行索引和查询处理降低延迟。
  • **、PDF、Office 文件和图像搜索。
  • 事件驱动管理: 通过事件订阅进行实时监控。

前提条件

  • JDK 8+ 已安装。
  • IntelliJ IDEAEclipse 的 IDE。
  • 用于依赖管理的 Maven。
  • 对 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 for Java

通过 Maven 安装

上述 Maven 代码段会自动将库拉入您的项目。

许可证获取

  • 免费试用 – 探索核心功能。
  • 临时许可证 – 延长测试期。
  • 完整许可证 – 生产就绪,无限制使用。

基本初始化和设置

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);

确保所选端口在防火墙中已打开且未被其他服务占用。

常见问题/O 带 存少事件处理程序注册 | 确保在任何索引开始前调用 SearchNetworkEvents.subscribe(node)。 |

| 图像搜索无结果 | 哈希差异阈值过低 | 增大允许的哈希差异(例如,从 4 提高到 8)。 |

常见问答

Q: 如何在 GroupDocs.Search 网络中优化索引性能?
A: 使用增量索引,将索引存放在高速 SSD 上,并为 JVM 分配足够的堆内存。

Q: 我可以在不重启整个搜索网络的情况下添加或移除节点吗?
A: 可以——节点可以动态部署或退役。添加节点后,再次调用 SearchNetworkDeployment.deploy 以刷新集群视图。

Q: 事件订阅如何提升网络管理?
A: 订阅的事件提供节点状态变化、索引进度和错误的实时警报,帮助实现主动排障。

Q: 能否同时搜索不同的文档格式?
A: 完全可以。GroupDocs.Search 在一次查询中支持 PDF、Word、Excel、PowerPoint、图像等多种格式。

Q: GroupDocs.Search 网络中的数据安全性如何?
A: 安全性取决于您的基础设施。请为节点通信实现 SSL/TLS,限制网络访问,并遵循数据保护的最佳实践。


最后更新: 2026-01-19
测试环境: GroupDocs.Search 25.4 for Java
作者: GroupDocs