搜索服务高级概述

SearchService 是 Firefox 浏览器中管理搜索引擎的核心组件。

下图是 SearchService 的高级系统上下文图。该图说明了哪些系统与 SearchService 交互,以便它能够完成管理搜索引擎的任务。

该图和描述是对 SearchService 职责的简化。它特别强调了 SearchService 如何在启动时向浏览器提供搜索引擎。但是,SearchService 还有许多其他职责,在图中未列出,例如在各种项目发生变化时维护和管理搜索引擎,例如用户的区域或语言环境、从远程设置接收到的配置更改、搜索引擎数据接收到的更新。尽管如此,该图还是概括了 SearchService 最常与之交互的主要组件。

示意图

../../_images/search-service-diagram-2.png

示意图描述

以下步骤与示意图上的编号相同。示意图上的编号 1 由下面的编号 1 描述。

  1. 当用户打开 Firefox 浏览器时,代码开始构建浏览器 UI 组件。在此启动阶段,我们有各种系统向 SearchService 发出调用。例如,browser.js 调用 Services.search.getDefault 以获取默认搜索引擎。

  2. SearchService 需要来自 Extension SystemSearchSettingsRemote Settings 的信息,以便以正确的顺序构建正确的引擎,并将引擎列表返回给调用者。

    a) 首先,SearchService 请求搜索配置。SearchService 调用 SearchEngineSelector.fetchEngineConfiguration,后者会调用 Remote Settings 获取搜索配置。Remote Settings 不会在启动时从远程数据库中获取搜索配置。相反,Remote Settings 会尝试从其本地数据库加载 搜索配置转储文件,如果该文件为空,则会将转储文件加载到其本地数据库中。只有在启动后,Remote Settings 才会在必要时连接到远程数据库。通过在启动后连接,可以避免潜在的网络请求,从而可能延迟启动。

    b) 其次,SearchService SearchSettings 中获取 JSON 文件。此 JSON 文件包含保存在用户计算机上的搜索引擎元数据。这些信息有助于 SearchService 记住用户为搜索引擎自定义的设置。

    c) 第三,扩展系统 将扩展数据传递给 SearchService。此时,SearchService 仅安装用户安装的搜索扩展。

    完成步骤 2a、2b 和 2c 后,SearchService 已完成从 System Add-onsSearchSettingsRemote Settings 收集搜索引擎数据。现在,SearchService 可以构建不同类型的搜索引擎。

  3. SearchService 通过创建 SearchEngines 的新实例来创建 应用程序提供的、附加组件的、Open Search 或企业策略搜索引擎

  4. SearchService 将引擎返回给请求它的调用者。例如,SearchService 将默认搜索引擎传回给 browser.js,即最初请求它的系统。

更新

此页面截至 2024 年 4 月 18 日更新。如果示意图或描述过时,请在 Firefox Search 共享驱动器中的 Firefox Search > Search Service Documentation 文件夹中查找对 Search Service Diagram 的访问权限。欢迎贡献以保持此页面最新。