在 Apache Solr 中建立索引

17 Mar 2025 | 6 分钟阅读

索引是对文档或其他实体进行系统化管理的过程。 为了在文档中定位信息,我们使用索引。

  • 索引可用于收集、解析和存储文档。
  • 当我们查找所需文档时,它可用于提高搜索查询的速度和性能。

Solr 索引过程概述

Apache Solr 中的索引过程分为三个基本任务

  • 将文档从其本机格式(例如 XML 或 JSON)转换为 Solr 支持的格式。
  • 使用几个明确定义的接口之一(例如 HTTP POST)将文档添加到 Solr。
  • 可以配置 Apache Solr 以在索引时对文档中的文本应用转换。

下图提供了在 Solr 中索引文档的三个必要步骤的高级概述。

Indexing in Apache Solr

Solr 支持我们文档的不同索引格式,包括 JSONXML 和 CSV。 在上图中,我们选择了 XML,因为 XML 的自描述格式使其易于适应和理解。 下面是一个示例,说明了我们的推文在使用 Solr XML 格式时的外观。

如您所见,XML 格式中显示的每个字段和语法都非常简单; 我们仅定义了所有字段的字段名称和值。 我们没有注意到的是文本分析或文件类型。 这是因为我们在上图中显示的 schema.xml 文档中定义了如何分析字段。 众所周知,Solr 为其所有核心服务提供了一个基本的 HTTP 接口,包括一个用于添加和更新文档的文档更新服务。 在图的左上方,我们描述了使用 HTTP POST 将我们的推文示例的 XML 发送到 Solr 中文档的更新服务。 此外,我们将在本教程的后面部分了解如何添加特定的文档类型,例如 JSON、CSV 和 XML。 现在我们将了解文档更新服务,该服务可用于验证文档中所有字段的内容,然后调用文本分析过程。 分析完所有字段后,生成的文本将添加到索引中,从而使文档可用于搜索。

schema.xml 文件定义了任何文档的字段和字段类型。 对于任何简单的应用程序,可能需要搜索的字段及其类型。 虽然,它可用于对您的架构进行一些预先规划。

设计您的架构

通过我们的示例,搜索的微博应用程序将直接深入其中并定义我们要索引的文档。 实际上,对于实际应用程序而言,此过程并非总是显而易见的,因此进行一些预先设计和计划工作会有所帮助。 现在,我们将学习搜索应用程序的基本设计注意事项。 具体来说,我们将学习回答有关我们搜索软件的以下关键问题

  • 我们的索引中包含哪些文档?
  • 如何唯一标识所有文档。
  • 用户通常搜索我们文档中的哪些字段?
  • 应该在搜索结果中向用户显示哪些字段?

让我们确定搜索应用程序中文档的适当粒度,这将影响您如何回答其他问题。

使用 Post 命令添加文档

在 Solr 的 bin 目录中,有一个 post 命令。 我们可以索引 Solr 中各种格式的文件,例如 CSV、JSON 和 XML。

我们可以浏览 Solr 的 bin 目录并运行 post 命令的 -h 选项,如下面的代码块所示。

当我们执行上述命令时,我们将获得 post 命令的选项列表,如下所示。

示例

让我们使用一个名为 sample.csv 的文件,其中包含给定的内容(在 bin 目录中)。

学生 ID名字电话城市
001奥利维亚+148022337加利福尼亚
002艾玛+148022338夏威夷
003索菲亚+148022339佛罗里达
004艾米丽+148022330德克萨斯州
005哈珀+148022336Kansas
006Scarlett+148022335Kentucky

上面的数据表包含个人详细信息,例如学生 ID、名字、电话和城市名称。 下面给出了 data-files 的 CSV 文件。 在这里,我们必须注意,您需要提及架构,记录其第一行。

idfirst_name电话号码location
001奥利维亚+848022337Michigan
002艾玛+848022338Minnesota
003索菲亚+848022339North Carolina
004艾米丽+848022330Ohio
005哈珀+848022336Oregon
006Scarlett+848022335Pennsylvania

您可以使用下面给出的 post 命令在名为 "sample_Solr" 的核心中索引这些数据

当我们执行上述命令时,给定的文档将在指定的核心下索引,并生成给定的输出。

使用给定的 URL 转到 Solr Web 用户界面的主页

https://:8983/

在主页上选择核心 Solr_sample。 不做任何修改,单击页面底部的 ExecuteQuery 按钮。

Indexing in Apache Solr

当我们执行查询时,我们可以观察到索引 CSV 文档的数据以默认格式 (JSON) 显示,如以下屏幕截图所示。

Indexing in Apache Solr

注意 - 同样,我们可以索引不同的文件格式,例如 XML、CSV、JSON 等。

使用 Solr Web 界面添加文档

您还可以使用 Solr 提供的 Web 界面来索引文档。 让我们看看如何索引以下 JSON 文档。

步骤 1: 使用给定的 URL 转到 Solr Web 界面 - https://:8983/

Indexing in Apache Solr

步骤 2: 选择核心 "Solr_sample"。 字段 Request Handler、Common Within、Overwrite 和 Boost 的值分别默认为/update、1000、true 和 1.0,如下图所示。

步骤 3: 最后,从 CSV、XML、JSON 等中选择所需的文档格式。在文本区域下输入要索引的文档,然后单击 Submit Document 按钮,如以下屏幕截图所示。

Indexing in Apache Solr

使用 Java Client API 添加文档

如您所见,下面是将文档添加到 Solr 索引的 Java 源代码。 使用名称 AddDocument.java 保存此程序。

可以通过在终端上执行以下命令来编译上述代码 -

当我们运行上述命令时,我们将在显示器上收到以下输出。

输出

文档已添加。