全文搜索是一种在文档集合中搜索文本/查询的方法。这种方法可以快速找到一个术语/短语的所有实例,并且它通过使用文本索引来工作。在本文中,我们将学习如何使用 Java 以编程方式搜索文档中的全文。

全文搜索

在此之后,您可以实施各种搜索技术并为文字处理文档、电子表格、演示文稿、HTML 文件、PDF 文件、电子书、电子邮件、ZIP 存档和许多其他 文档格式 构建搜索解决方案。

以下主题涵盖以下内容:

用于全文搜索的 Java API

GroupDocs.Search提供了全文搜索Java API,可以集成到任何应用程序中,无需任何第三方工具和软件依赖。它允许您搜索大量文档格式。可以使用 API 执行的一些搜索技术如下:

  • 区分大小写搜索
  • 正则表达式搜索
  • 分面搜索
  • 模糊搜索
  • 同音字搜索
  • 同义词搜索

下载或配置

您可以从 下载部分 下载 JAR 文件,或者仅获取 基于 maven 的 Java 应用程序的 pom.xml 的最新存储库和依赖项配置。

<repository>
	<id>GroupDocsJavaAPI</id>
	<name>GroupDocs Java API</name>
	<url>http://repository.groupdocs.com/repo/</url>
</repository>
<dependency>
        <groupId>com.groupdocs</groupId>
        <artifactId>groupdocs-search</artifactId>
        <version>21.3</version> 
</dependency>

在文件夹中存储的文件中执行搜索有两个步骤。

  • 索引
  • 执行搜索

使用 Java 索引文件

索引拥有所有文档的扫描文本。因此,当您要执行搜索操作时,只引用索引,而不是原始文档的文本。为了能够立即搜索具有相同或不同文件格式的数千个文档,您需要创建一个索引并将这些文档添加到其中。当文档被索引时,索引已准备好处理搜索查询。

以下简单的两行代码创建一个索引,并将文档文件夹添加到索引中。

Index index = new Index("indexingFolderPath");
index.add("documentsFolderPath");

在索引多个相同或不同格式(如 Word、PDF、Excel 和 HTML) 的文档后,我们可以继续处理对它们的特定搜索查询(搜索词“Draw”) 。以下是如何使用 Java 对文件夹内的多个文档执行文本搜索的步骤:

  • 指定文档的源文件夹和索引文件夹。
  • 使用索引文件夹创建索引
  • 将源文件夹添加到索引中。
  • 准备查询字符串。
  • 使用 Index 类的 search 方法执行搜索。
  • 遍历每个搜索结果的每个文档的属性。

以下源代码在 Java 中对提供的文件夹的所有文档执行文本搜索。

// 使用 Java 在文件夹中搜索多个 PDF、Word、Excel、HTML 文档中的指定文本
Index index = new Index("path/indexingFolder");
index.add("path/documentsFolderPath");

// 在索引中搜索指定文本
SearchResult result = index.search("Draw");

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

我们将获取文档路径和搜索词在该指定文件夹的所有文档中出现的次数。这是可视化的屏幕截图。

完整搜索文本输出

在 Java 中突出显示文本搜索结果

现在让我们执行相同的全文搜索,并突出显示与您的查询匹配的所有匹配项。

以下步骤显示如何突出显示文本搜索结果:

  • 创建索引并将文档文件夹添加到索引中。
  • 准备查询字符串。
  • 使用 search 方法搜索文件夹。
  • 在遍历结果时,使用 HtmlHighlighter 创建荧光笔。
  • 使用高亮方法突出显示搜索结果。

以下代码使用 Java 生成带有突出显示的搜索结果的 HTML 输出。

// 在Java中突出显示文件夹中多个文档的全文搜索结果
Index index = new Index("path/indexingFolder");
index.add("path/documentsFolderPath"); // Synchronous indexing documents from the specified folder

String query = "draw"; // Specify a search query
SearchResult result = index.search(query); // Searching in the index

for (int i = 0; i < result.getDocumentCount(); i++) 
{
    FoundDocument document = result.getFoundDocument(i);

    String path = "path/Highlighted-"+ i +".html";
    OutputAdapter outputAdapter = new FileOutputAdapter(path); 
    HtmlHighlighter highlighter = new HtmlHighlighter(outputAdapter); // Creating the highlighter
    index.highlight(document, highlighter); // Generates HTML formatted output document with highlighted search results
}

作为输出,我们将获得多个 HTML 文件。每个文件将显示单独文档的内容(例如 excel.xlsx、source.docx、target.docx) ,并带有突出显示的搜索词/词。下面给出的是使用上述代码获得的 DOCX 文件、TXT 文件和 PDF 文件的突出显示的 HTML 输出。

使用 Java 突出显示内容中的全文搜索结果

获取免费 API 许可证

您可以 获得免费的临时许可证 以便在没有评估限制的情况下使用 API。

结论

在本文中,我们学习了在 Java 中搜索文件夹的多个文档中的文本。此外,我们讨论了如何使用 GroupDocs.Search for Java 以编程方式突出显示 MS Word 文件、TXT 文件和 PDF 文件的 HTML 格式的搜索结果文本。

您可以使用 documentation 了解有关 API 的更多信息。 GitHub 上提供了更多示例。如有疑问,请通过 论坛 联系我们。

也可以看看