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 IDEA 或 Eclipse 等 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
- Install the Library – 使用上面的 Maven 代码段或从 GroupDocs 下载 JAR。
- Obtain a License – 首先使用试用许可证,随后在投入生产时升级。
- 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