Apache Solr 架构

2025年3月17日 | 阅读 3 分钟

Apache Solr 是一个基于 J2EE 的应用程序,它在内部使用 Apache Lucene 的库来生成索引并提供用户友好的搜索。Apache Solr 的架构已借助下面的框图进行了描述。

Apache Solr 是一个基于 J2EE 的应用程序,它在内部使用 Apache Lucene 的库来生成索引并提供用户友好的搜索。Apache Solr 的架构已借助下面的框图进行了描述。

Apache Solr Architecture

Apache Solr 的实例可以作为单核或多核应用程序运行,并基于客户端-服务器模型。以前,apache solr 只有一个内核,这限制了消费者在一个应用程序上通过单个配置文件和模式运行 solr。在后来的开发中,它可以支持创建多个内核。您可以使用统一的管理运行一个 Solr 实例用于多个模式和配置。Apache solr 在分布式模型中运行,以实现高可用性和可扩展性。

Solr 的整体架构在逻辑上可以分为四层。存储层负责管理索引和配置元数据。它位于实例将运行的 J2EE 容器内,solr 引擎是在容器之上运行的应用程序包。最后,交互表示客户端/Apache Solr 服务器如何与 Web 浏览器 交互。让我们在接下来的部分中详细了解每个组件。

存储

Apache Solr 存储主要用于存储元数据和必要的索引信息。它通常是本地配置在 Apache Solr 配置文件中的文件存储。安装包默认附带一个 Jetty servlet 和 HTTP 服务器,与该包相关的配置可以在 Solr 安装中的 $solr. Home/conf 文件夹中找到。索引包含文档的序列,外部存储设备可以在 Apache Solr 中配置。例如,数据库或大数据存储系统。

存储的组件

  • 字段的集合称为文档。
  • 一个字段被命名为术语的序列。
  • 一个字符串与该术语相关。

Apache Solr 的构建块

以下是 Apache Solr 的基本构建块和组件?

请求处理程序? 这些请求处理程序处理我们发送到 Apache Solr 服务器的请求。例如索引更新请求或查询请求。根据我们的要求,我们必须选择请求处理程序。我们将处理程序映射到特定的 URI 端点,通常是为了将请求传递给 Solr,并且它将为该请求提供服务。

搜索组件? 它是 Apache Solr 中可用的搜索功能。它可以是拼写检查、方面、查询、命中突出显示等。所有组件都注册为搜索处理程序。您可以将多个组件注册到一个搜索处理程序。

查询解析器? Apache Solr 中的查询解析器解析我们传递给 Solr 服务器的查询,并验证查询是否存在语法错误。在解析查询后,它将它们转换为 Lucene 应用程序可以理解的格式。

响应编写器? 在 Apache Solr 中,响应编写器是为用户查询生成格式化输出的组件。Apache Solr 支持的响应格式,例如 XMLJSON、CSV 等。对于每种类型的响应,我们都有不同的响应编写器。

分析器/分词器 - Apache Solr 以令牌的形式识别数据。它分析内容,将其分成令牌并将所有令牌传递给 Lucene。Apache Solr 中的分析器可用于检查字段的文本并创建一个令牌流。分析器准备的令牌流可以分解成令牌。

更新请求处理器 - 当我们从 Apache Solr 提取更新请求时,更新请求将通过一组插件(即签名、日志记录、索引),这统称为更新请求处理器。此更新请求处理器负责修改,例如添加字段、删除字段等。