如何使用 GroupDocs.Search Java 配置网络
介绍
在当今的数字环境中增长时常常遇到性能瓶颈,但 GroupDocs.Search for Java 为您提供了可扩展的高性能基础。在本教程中,我们将逐步演示如何建立稳健的搜索网络——从配置端口、部署节点、索引文档、订阅事件,到执行图像搜索。
快速答案
- 搜索网络的主要目的是什么? 将索引和查询负载分布到多个节点,以获得更好的可扩展性和可靠性。
- GroupDocs.Search 默认使用哪个端口? 示例使用端口 49120,但您可以选择任何空闲端口。
- 我可以在不中断的情况下添加或移除节点吗? 可以——节点可以动态部署或退役。
- 生产环境需要许可证吗? 生产使用需要完整许可证;评估可使用试用许可证。
- 是否开箱即支持图像搜索? 是的——GroupDocs.Search 提供内置的图像哈希? 搜索网络是一组相互连接的 SearchNetworkNode 实例的集合,它们共享索引信息并协同响应查询。这种架构让您能够处理海量文档集合,同时保持低响应时间。
为什么使用 GroupDocs.Search for Java?
- 可扩展性: 随着存储库增长添加节点。
- 性能: 并行索引和查询处理降低延迟。
- **、PDF、Office 文件和图像搜索。
- 事件驱动管理: 通过事件订阅进行实时监控。
前提条件
- JDK 8+ 已安装。
- 如 IntelliJ IDEA 或 Eclipse 的 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