使用 GroupDocs.Search 的 Java 高亮搜索结果

如果您厌倦了手动筛选无尽的文档,highlight search results java 提供了一种快速、可靠的方式来精准呈现您需要的内容。在本教程中,我们将逐步演示如何配置分布式搜索网络、对文件进行索引、执行查询,最后在文档内部直接高亮匹配项。完成后,您将拥有一个可在多个节点上扩展的生产就绪解决方案,并能瞬间突出显示相关术语。

快速答案

  • “highlight search results java” 是什么意思? 它指的是在使用如 GroupDocs.Search 的 Java 库时,以编程方式在文档中标记找到的关键字。
  • 我可以在同一文档中高亮多个词吗? 是的——使用 HighlightOptions 来定义每个匹配前后显示的词数。
  • 运行此示例是否需要许可证? 免费试用或临时许可证可用于测试;生产环境需要正式许可证。
  • 需要哪个 Java 版本? Java 8 或更高。
  • 这种方法适用于大型文档集合吗? 绝对适用——搜索网络会在节点之间分配索引和查询负载。

什么是 Highlight Search Results Java?

Highlight search results java 是指在搜索查询后,定位文档中匹配的片段,并以视觉方式强调这些片段(例如,用标记包围或返回高亮片段)。这使得最终用户能够在不打开整个文件的情况下,轻松查看每个匹配的上下文。

为什么使用 GroupDocs.Search 进行高亮?

GroupDocs.Search 提供了即用型的高性能引擎,支持数十种文件格式、分布式索引以及内置的片段高亮器。它消除了编写自定义解析器或管理底层搜索基础设施的需求,让您专注于提供流畅的用户体验。

前置条件

  • Java Development Kit (JDK) 8+ – 确保 java -version 显示 1.8 或更高。
  • Maven – 用于依赖管理。
  • GroupDocs.Search for Java 25.4 – 本指南使用的版本。
  • IntelliJ IDEAEclipse 等 IDE(可选但推荐)。
  • 基本的 Java 和网络概念知识。

设置 GroupDocs.Search for Java

您可以通过 Maven 或直接下载 JAR 将库引入项目。

Maven 设置

Add the repository and dependency to your 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 下载最新的 JAR。

许可证获取步骤

  • 免费试用: 先使用试用版探索核心功能。
  • 临时许可证:此页面 获取延长的测试许可证。
  • 购买: 获取用于生产部署的正式许可证。

基本初始化和设置

Create an Index instance that points to a folder where the search index will be stored:

import com.groupdocs.search.*;

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

实施指南

如何在分布式网络中实现 Highlight Search Results Java

配置搜索网络

First, define where your documents live and which port the network will use.

import com.groupdocs.search.common.*;
import com.groupdocs.search.scaling.configuring.*;

String basePath = "YOUR_DOCUMENT_DIRECTORY/AdvancedUsage/Scaling/HighlightingResultsInNetwork/";
int basePort = 49116; // Change if port is busy

Configuration configuration = ConfiguringSearchNetwork.configure(basePath, basePort);
  • basePath – 包含您要索引文件的根文件夹。
  • basePort – 节点通信的 TCP 端口;请选择未被占用的端口。

部署搜索网络节点

Deploy one or more nodes based on the configuration. The first node becomes the master.

import com.groupdocs.search.scaling.*;

SearchNetworkNode[] nodes = SearchNetworkDeployment.deploy(basePath, basePort, configuration);
SearchNetworkNode masterNode = nodes[0];
  • nodes – 所有运行节点的数组。
  • masterNode – 协调索引和查询分发。

订阅搜索网络节点事件

Attach listeners to the master node to receive real‑time notifications (e.g., when indexing completes).

import com.groupdocs.search.scaling.events.*;

SearchNetworkNodeEvents.subscribe(masterNode);

在网络节点中索引目录

Point the node to the folder(s) you want to index. The helper class Utils.DocumentsPath resolves to the sample data folder.

import com.groupdocs.search.examples.Utils;
import com.groupdocs.search.options.*;

IndexingDocuments.addDirectories(masterNode, Utils.DocumentsPath);

跨网络节点搜索文本

Run a query against all nodes and retrieve the matching documents.

import java.util.ArrayList;
import com.groupdocs.search.scaling.results.*;

ArrayList<NetworkFoundDocument> documents = TextSearchInNetwork.searchAll(masterNode, "ipsum", false);
highlightInDocument(masterNode, documents.get(0), 3); // Highlight results from the first found document.
  • "ipsum" 替换为您需要查找的任何词。
  • 接下来显示的 highlightInDocument 方法将执行高亮。

高亮多个词文档 – 高亮搜索结果

以下方法演示了如何在每个匹配周围高亮片段,并展示了如何控制周围词的数量,以满足次要关键词 highlight multiple terms document 的需求。

import com.groupdocs.search.highlighters.*;
import com.groupdocs.search.options.*;

public static void highlightInDocument(
    SearchNetworkNode node,
    NetworkFoundDocument document,
    int maxFragments) {
    
    Searcher searcher = node.getSearcher();
    FragmentHighlighter highlighter = new FragmentHighlighter(OutputFormat.PlainText);

    HighlightOptions options = new HighlightOptions();
    options.setTermsAfter(5);
    options.setTermsBefore(5);
    options.setTermsTotal(15);

    searcher.highlight(document, highlighter, options); // Perform highlighting on the document.

    FragmentContainer[] result = highlighter.getResult();
    for (FragmentContainer container : result) {
        if (container.getCount() == 0) continue;

        String[] fragments = container.getFragments();
        int count = Math.min(fragments.length, maxFragments);
        for (int j = 0; j < count; j++) {
            // Print each fragment within the specified limit.
        }
    }
}
  • OutputFormat.PlainText – 返回纯文本片段;您可以切换为 HTML 以获得更丰富的 UI。
  • HighlightOptions – 控制每个匹配前后包含的词数(setTermsBeforesetTermsAfter)。
  • maxFragments – 限制每个文档显示的片段数量上限。

关闭网络节点

When you’re done, shut down every node to free resources.

for (SearchNetworkNode node : nodes) {
    node.close();
}

实际应用

  • 企业文档管理: 集中公司文件,让员工即时定位相关合同或政策。
  • 法律案件文件: 通过高亮关键法律术语快速检索先例文件。
  • 研发知识库: 研究人员可以搜索专利或技术论文并查看高亮摘录。
  • 电子商务目录: 让购物者通过关键字搜索,并在描述中看到高亮匹配。
  • 图书馆系统: 读者可以跨数千本书搜索,并在不打开每个文件的情况下查看高亮段落。

性能考虑

  • 保持索引新鲜: 每晚重新索引更改的文件或使用增量更新。
  • 利用多个节点: 分散索引和查询负载以避免瓶颈。
  • 调优 HighlightOptions 减少 termsBefore/After 可降低超大文档的内存使用。

常见问题与故障排除

症状可能原因解决方案
未返回结果索引未构建或指向错误的文件夹验证 Utils.DocumentsPath 并重新运行 IndexingDocuments.addDirectories
高亮输出为空HighlightOptions 限制过低或文档编码问题增加 termsTotal 或确保文档的编码受支持
端口冲突错误basePort 已被占用选择其他端口号(例如 49117)
许可证异常缺少或已过期的许可证文件将有效的 GroupDocs.Search.lic 文件放置在应用根目录

常见问答

Q: 我可以部署多个搜索网络节点以实现负载均衡吗?
A: 是的,部署多个节点可以分散索引和查询工作,提高可扩展性和响应时间。

Q: 如何在同一文档中高亮多个搜索词?
A: 将词列表传递给 highlight 方法,并配置 HighlightOptions 以显示每个匹配的周围词。

Q: 是否可以订阅实时搜索事件?
A: 完全可以。使用 SearchNetworkNodeEvents.subscribe(masterNode) 来接收索引进度、查询执行和错误的回调。

Q: GroupDocs.Search 支持哪些文件格式的索引和高亮?
A: 超过 50 种格式,包括 DOCX、PDF、HTML、TXT、PPTX 等。

Q: 如何提升对超大集合的搜索速度?
A: 定期更新索引、在节点间分布索引,并微调 HighlightOptions 以限制片段大小。

结论

通过本指南,您现在拥有一个完整的、可投入生产的 highlight search results java 使用 GroupDocs.Search 的设置。您可以在网络中扩展该解决方案,索引任何受支持的文档类型,执行快速查询,并返回帮助用户精准找到所需内容的高亮片段。接下来可以探索的步骤包括——将结果集成到 Web UI、添加分面搜索,或结合 OCR 处理扫描的 PDF。


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