Author: -> 作者: GroupDocs

Make sure to keep bold formatting.

Now produce final markdown with translations.

Check for any missing placeholders: CODE_BLOCK_0-6 all present.

Check for any markdown links: only two links. Keep them.

Check for images: none.

All good.

Now produce final answer.# 突出显示搜索结果 Java – 同步与异步索引

通过强大的 GroupDocs.Search 库 highlighting search results Java 来提升您的 Java 应用程序。无论是处理少量文件还是海量仓库,掌握同步和异步索引都能让您在不阻塞应用线程的情况下提供快速、准确的结果。

快速答案

  • What does “highlight search results Java” mean? 它指的是在搜索结果中使用可视化提示(例如 HTML <mark> 标签)来渲染匹配的词汇,以便用户能够看到查询在每个文档中的出现位置。
  • When should I use synchronous indexing? 对于需要新添加文档立即可用的小到中等规模数据集。
  • When is asynchronous indexing preferable? 在处理大型文档集合或在 UI 线程上运行时,需要保持应用响应性时,异步索引更为合适。
  • Do I need a license? 免费试用可用于开发;完整许可证解锁高级功能并取消使用限制。
  • Which Java version is supported? Java 8 或更高版本。

什么是 “highlight search results Java”?

在 Java 中对搜索结果进行突出显示是指将 GroupDocs.Search 返回的原始匹配项用 HTML(或其他标记)包装,使其在 UI 或网页中显示时突出。这样可以通过即时展示每个命中的上下文来提升用户体验。

为什么在 Java 中使用 GroupDocs.Search?

GroupDocs.Search 提供了一个高性能、语言无关的引擎,支持:

  • 实时索引和搜索
  • 大规模工作负载的异步处理
  • 内置结果突出显示
  • 多语言和自定义分析器支持

这些功能使其非常适合内容管理系统、电子商务目录和企业文档库。

前提条件

在开始之前,请确保您已经拥有:

  • Java Development Kit(JDK 8 或更高)已安装。
  • IntelliJ IDEAEclipse 等 IDE。
  • 包含您想要索引的文档的文件夹。
  • 用于依赖管理的 Maven(或您也可以手动下载 JAR)。

必需的库和依赖

将 GroupDocs.Search 添加到您的 Maven 项目中:

<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 获取最新版本。

环境设置

  • 确认您的 JAVA_HOME 指向兼容的 JDK。
  • 在 IDE 中创建项目并添加上述 Maven 配置。
  • 准备一个目录(例如 documents/),其中包含示例文本、PDF 或 Word 文件。

如何在 Java 中设置 GroupDocs.Search

  1. Install the Library – 使用上面的 Maven 代码段或从 GroupDocs 下载 JAR。
  2. Obtain a License – 首先使用试用许可证,随后在投入生产时升级。
  3. Initialize the Index – 以下代码片段展示了如何创建(或打开)索引文件夹:
import com.groupdocs.search.Index;

// Create an index in the specified folder
Index index = new Index("path/to/index/folder");

如何在 Java 中突出显示搜索结果 – 同步索引

同步索引会立即处理文档,使新添加的文件能够即时搜索。

步骤 1:创建索引并附加错误处理

import com.groupdocs.search.*;
import com.groupdocs.search.events.*;
import java.nio.file.Paths;

public class SynchronousIndexingFeature {
    public static void main(String[] args) {
        String indexFolder = "YOUR_DOCUMENT_DIRECTORY/SynchronousIndexing";
        String documentsFolder = YOUR_DOCUMENT_DIRECTORY; // Replace with actual directory path

        Index index = new Index(indexFolder);

        // Handle errors
        index.getEvents().ErrorOccurred.add(new EventHandler<IndexErrorEventArgs>() {
            @Override
            public void invoke(Object sender, IndexErrorEventArgs args) {
                System.out.println(args.getMessage());
            }
        });

步骤 2:添加文档并执行搜索

        // Add documents
        index.add(documentsFolder);

        // Perform a search
        String query = "tincidunt";
        SearchResult result = index.search(query);

步骤 3:处理结果并 highlight search results Java

        for (int i = 0; i < result.getDocumentCount(); i++) {
            FoundDocument document = result.getFoundDocument(i);
            System.out.println(": Document: " + document.getDocumentInfo().getFilePath());
            System.out.println(": Occurrences: " + document.getOccurrenceCount());
        }

        // Highlight results
        if (result.getDocumentCount() > 0) {
            FoundDocument document = result.getFoundDocument(0);
            String path = YOUR_OUTPUT_DIRECTORY + "/Highlighted.html";
            OutputAdapter outputAdapter = new FileOutputAdapter(OutputFormat.Html, path);
            DocumentHighlighter highlighter = new DocumentHighlighter(outputAdapter);
            index.highlight(document, highlighter);
        }
    }
}

DocumentHighlighter 会自动使用 <mark> 标签(或您配置的任何格式)包装匹配的词汇,为您提供可直接显示的 highlighted search results

如何在 Java 中突出显示搜索结果 – 异步索引

在处理成千上万的文件时,阻塞主线程是不可取的。异步索引让引擎在后台工作。

步骤 1:使用事件监听器设置索引

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

public class AsynchronousIndexingFeature {
    public static void main(String[] args) {
        String indexFolder = "YOUR_DOCUMENT_DIRECTORY/AsynchronousIndexing";
        String documentsFolder = YOUR_DOCUMENT_DIRECTORY; // Replace with actual directory path

        Index index = new Index(indexFolder);

        // Handle errors and status changes
        index.getEvents().ErrorOccurred.add(new EventHandler<IndexErrorEventArgs>() {
            @Override
            public void invoke(Object sender, IndexErrorEventArgs args) {
                System.out.println(args.getMessage());
            }
        });

        index.getEvents().StatusChanged.add(new EventHandler<BaseIndexEventArgs>() {
            @Override
            public void invoke(Object sender, BaseIndexEventArgs args) {
                if (args.getStatus() != IndexStatus.Ready || args.getStatus() == IndexStatus.Failed) {
                    System.out.println("Indexing completed.");
                }
            }
        });

步骤 2:启用异步模式并开始索引

        // Set up async indexing options
        IndexingOptions options = new IndexingOptions();
        options.setAsync(true);

        // Add documents asynchronously
        index.add(documentsFolder, options);
    }
}

在索引构建期间,您的应用程序可以继续处理其他请求。一旦 StatusChanged 事件报告为 Ready,您即可安全地执行搜索并获取 highlighted search results Java

如何 index documents java – 实用技巧

  • Batch size:对于巨大的集合,将文件夹拆分为更小的批次以避免内存峰值。
  • File filters:使用 IndexingOptions.setFileExtensions 仅包含所需的格式(例如 .pdf.docx)。
  • Re‑indexing:文档更改时,调用 index.update(documentPath) 而不是重新构建整个索引。

性能考虑

  • Memory:关注堆内存使用情况;如果处理大量大文件,请增加 -Xmx
  • CPU:异步索引分散工作负载,但仍会消耗 CPU——请使用 JVisualVM 进行监控。
  • Result Highlighting:突出显示会带来少量处理开销;如果需要重复显示结果,请缓存生成的 HTML。

常见问题

Q: 我可以在同一个应用程序中同时使用同步和异步索引吗?
A: 是的。对小型、频繁更新的集合使用同步索引,对批量导入或后台任务使用异步索引。

Q: 我该如何自定义突出显示的样式?
A: 提供自定义的 DocumentHighlighter 实现,在匹配词汇周围写入所需的 HTML、CSS 或 XML 标签。

Q: GroupDocs.Search 开箱即支持哪些文件类型?
A: 文本、PDF、DOC/DOCX、XLS/XLSX、PPT/PPTX、HTML 等众多格式,均通过其内置解析器支持。

Q: 能否同时搜索多种语言?
A: 当然可以。GroupDocs.Search 包含多语言分析器;在创建索引时只需配置相应的 Analyzer

Q: 我该如何保护索引文件夹的安全?
A: 将索引存放在受保护的目录,设置合适的文件系统权限,并考虑使用库的安全功能对索引进行加密。


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