构建可扩展的搜索网络 – 使用 GroupDocs.Java 索引文档

在本教程中,您将学习 如何将文档添加到索引 和 构建可扩展的搜索网络,使用 GroupDocs.Search for Java。我们将逐步演示如何配置搜索网络、部署节点以及处理事件,以便您的应用程序能够在多台服务器上高效处理大型文档集合。

快速答案

  • “将文档添加到索引”是什么意思? 它指的是将文件插入可搜索的索引,以便能够快速查询。
  • 哪个库提供此功能? GroupDocs.Search for Java。
  • 我需要许可证吗? 提供临时试用许可证;生产环境需要商业许可证。
  • 我可以水平扩展吗? 可以——通过部署多个 SearchNetworkNode 实例。
  • 需要哪个 Java 版本? JDK 8 或更高。

什么是将文档添加到索引?

将源文件(PDF、DOCX、PPTX 等)加载到 GroupDocs.Search 引擎中,引擎会提取文本、构建词频表,并将其存储在索引文件中。生成的索引能够在数百页的文档集合上实现亚秒级关键词查询。

为什么在网络环境中使用 GroupDocs.Search for Java?

将索引和搜索工作负载分布到多个节点,在靠近数据源的地方处理以降低查询延迟,并且可以在不中断服务的情况下添加或移除节点。该架构使您能够 跨多台服务器搜索,同时保持性能一致。

前置条件

  • Java Development Kit (JDK) 8+ 已安装。
  • Maven 用于依赖管理。
  • 熟悉 Java 和 Maven 项目结构的基础知识。

必需的库、版本和依赖

要在 Maven 项目中实现 GroupDocs.Search for Java,请在项目中包含以下内容:

<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 发布 下载最新版本。您也可以在 GroupDocs Search Java 发布 找到这些发布。

环境设置要求

  • 系统上已安装 JDK 8 或更高版本。
  • 如果使用 Maven 项目,请已安装并配置 Maven。

知识前提

  • 对 Java 编程有基本了解。
  • 熟悉在 Maven 中管理依赖。

设置 GroupDocs.Search for Java

  1. Maven 设置:在 pom.xml 文件中添加如上所示的仓库和依赖。
  2. 直接下载:或者,从 GroupDocs Search Java 发布 下载库。

获取许可证

  • 通过访问 GroupDocs 网站 获取免费试用或临时许可证。
  • 如需完整访问和支持,请考虑购买商业许可证。

基本初始化

在 Java 应用程序中初始化 GroupDocs.Search:

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. 企业搜索解决方案 – 实现搜索网络,以在多台服务器上处理大规模文档搜索。
  2. 电子商务平台 – 通过在多个节点上分配索引任务来提升产品搜索能力。
  3. 内容管理系统 (CMS) – 改善 CMS 环境中内容检索和更新的性能。

性能考虑

  • 根据系统资源优化节点部署。
  • 定期监控内存使用情况以防止泄漏,尤其是在处理大型数据集时。
  • 利用配置设置对索引和搜索操作进行微调,以提高效率。

常见问题及解决方案

问题常见原因解决方案
端口冲突basePort 已被占用将 basePort 更改为可用的端口
节点不可达防火墙或网络规则打开所需端口并验证连通性
索引未更新文档路径不正确验证 basePath 指向正确的目录
高内存使用大批量索引将文档分成更小的批次进行索引或增加堆大小

常见问答

Q: 部署节点时如何处理端口冲突?
A: 将配置代码中的 basePort 变量更改为可用端口。

Q: GroupDocs.Search 可以用于实时索引吗?
A: 可以,它在适当的配置下支持实时索引。

Q: 节点部署期间常见的哪些问题?
A: 网络连通性和路径设置错误是常见原因。请确保所有路径和端口配置正确。

Q: 网络运行后还能将文档添加到索引吗?
A: 完全可以。您可以在任意节点调用 index.add(...),网络会自动分配新的工作负载。

Q: 开发测试是否需要许可证?
A: 临时试用许可证足以用于测试;生产环境需要商业许可证。

资源

通过遵循本指南,您可以有效 将文档添加到索引 并使用 GroupDocs.Search for Java 管理强大的 构建可扩展的搜索网络。祝编码愉快!


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

相关教程