Skip to main content
From 16:00 UTC on January 17, 2026, to 20:00 UTC on January 17, 2026, we will perform planned maintenance on the Trailhead, myTrailhead, and Trailblazer Community sites. During the maintenance, these sites will be unavailable, and users won't be able to access them. Please plan your activities around this required maintenance.

选择恰当的搜索解决方案

学习目标

完成本单元后,您将能够:

  • 解释何时创建自定义搜索解决方案。
  • 描述 SOSL 和 SOQL 之间的差异。
  • 确定可用于搜索的 API 协议。

Salesforce 的搜索方式

您知道最常用的 Salesforce 功能是什么吗?搜索才是正确答案。搜索是用户希望在数千条其他数据中找到想要的那条记录的方法。

在此 Trailhead 模块中,您将了解 Salesforce 搜索的工作原理并确定自定义搜索解决方案是否适合您。您还将学习如何针对一些常见用例使用 Salesforce API 快速启动(或重建)自定义解决方案。最后,您将学习如何优化搜索查询以获取更有针对性的相关结果。简而言之,您将对搜索以及如何通过搜索帮助用户提高工作效率有深入的了解。

首先,让我们讨论一下完整搜索的工作原理。

所有记录都作为数据字段存储在组织的数据库中。当您更新或创建记录时,搜索引擎会出现,生成数据的副本,并将内容分解为令牌的小块。我们将这些令牌以及返回原始记录的链接存储在搜索索引中。

从用户的角度来看,搜索流程类似于创建记录的流程。当用户在搜索字段 (1) 中输入一个词时,搜索引擎会将搜索词分解为令牌 (2)。搜索引擎将这些令牌与存储在搜索索引 (3) 中的记录信息进行匹配,按相关性 (4) 对相关记录进行排名,并返回允许用户访问 (5) 的结果。

搜索索引

让我们花点时间思考一下搜索索引。当我们可以搜索组织数据库时,为什么还要费力去生成令牌呢?原因是搜索索引对于返回给用户的结果非常智能。

搜索索引和令牌允许搜索引擎应用高级功能,如拼写更正、昵称、词形还原和同义词组。这意味着,我们可以提供包含用户搜索词变化的记录,以扩大搜索结果范围。(另外,您可能还知道,词形还原与模糊匹配无关。它更多的是识别和返回搜索词的变体,比如搜索结果中的 addaddingadded。)

搜索索引还支持将相关性排名引入组合。这是搜索查找用户正在查询记录并对其进行排名的方法。涉及哪些内容呢?如搜索词的频率、顺序和唯一性;记录活动;访问权限;和其他一些因素。 

我们来比较一下。对 bunny slippers(兔子拖鞋)的数据库搜索仅返回与兔子拖鞋完全匹配的记录。但是有了搜索索引之后,您会得到含 bunny slippers 的记录。您还会看到相似词的记录,例如 rabbit slippers 或者 bunny slipper(单数)。另外,假设您输入了 slippers bunny 或者 bunny 拼写错误。通过乱序匹配和拼写检查,您仍然可以看到相关结果。并且所有结果都按与执行搜索的特定用户相关的内容进行排序。

也许您在想:开箱即用的 Salesforce 搜索确实听起来很棒(而且确实如此),并且适用于大多数用例。那么,什么时候需要自定义解决方案?

通常,当组织使用自定义 UI 而不是标准 Salesforce UI 时,您需要自定义搜索解决方案。本土化定制 UI 示例是面向客户的知识库或者员工的内部产品数据站点。提醒一句:构建自定义用户界面并不适合所有人,而且需要额外的工作。好处是自定义搜索允许您利用 Salesforce 搜索的一些高级功能。因此,如果您的公司决定构建自定义 UI 并需要自定义搜索时,这个模块就很适合您。

前面已经介绍了 Salesforce Search 101,现在来谈谈如何让您在自定义搜索解决方案中查找记录 API。

通过 API 连接搜索

请记住两种主流 API。(稍后讨论两种额外 API。) 

  • Salesforce Object Query Language (SOQL)
  • Salesforce Object Search Language (SOSL)

给定 API 中的 SOQL 和 SOSL 格式文本查询。但这也是唯一的相似之处。SOQL 查询相当于 SELECT SQL 语句并搜索组织数据库。另一方面,SOSL 是一种针对搜索索引执行基于文本搜索的编程方式。SOSL 使用了前面提到的搜索索引中所有很不错的特性。

SOQL 和 SOSL 有着不同的语法。我们在资源部分包含了指向开发人员文档的链接供您参考。但这里有一些关于何时使用 SOQL 或 SOSL 的指南。

当您知道数据所在的对象或字段,或者想实现以下场景时,请使用 SOQL:

  • 从单个对象或多个相互关联的对象中检索数据。
  • 计算满足指定条件的记录数。
  • 将结果作为查询的一部分进行排序。
  • 从数字、日期或复选框字段中检索数据。

当您不知道数据所在的对象或字段,或者想实现以下场景时,请使用 SOSL:

  • 检索您知道字段中存在的特定词的数据。由于 SOSL 可以标记一个字段中的多个词并从中构建搜索索引,所以 SOSL 搜索速度更快并且可以返回更多相关结果。
  • 有效地检索多个对象和字段,这些对象可能彼此相关,也可能不相关。
  • 使用部门功能检索组织中特定部门的数据,并且您希望以最有效的方式找到数据。

现在我们来看看两种其他 API 类型。 

首先,建议记录 API。也许您已经通过别名了解过建议记录,分别为自动建议、即时结果或预先输入。您可能也熟悉这种情况。假设您正在使用一个网站,出售最酷的跑步鞋。为自己的知识库使用定制的 Salesforce 搜索解决方案来支持跑步者团体。您想知道为越野跑买哪种鞋。您开始在搜索栏中输入“trail running(越野跑)”,随即会显示标题中包含搜索词的文章。 

搜索框准确地知道您想阅读的内容!

Search Suggested Records 和 Search Suggested Articles REST 方法可供您使用,让您的用户获得同样的即时满意度。稍后我们将为您演示这些方法的使用方式。

我们一直在谈论如何在 Salesforce 中查找记录。但是,如果您在 Salesforce 外部存储了用户的工作访问记录,该怎么办呢?嗯,对这个问题我们也有解决方案:Salesforce 联合搜索。这是用户搜索存储在 Salesforce 外部项目的新方式 — 这些内容还保留在 Salesforce Classic、Salesforce Console 或 Lightning Experience 中。 

Salesforce 联合搜索允许您将全局搜索框设为外部搜索引擎。设置联合搜索后,我们将用户的查询传输到外部引擎,通过该引擎搜索外部资源。结果直接在 Salesforce 搜索结果中返回。我们通过 Salesforce 联合搜索连接器执行此操作。该连接器的构建遵循 OpenSearch 规范,因此您可以插入符合此行业标准的任何搜索引擎。

重要的是要知道 Salesforce 联合搜索不通过 Salesforce 搜索索引,这意味着不能应用所有这些很酷的 Salesforce 高级功能。相反,根据外部搜索提供商返回结果,这也很酷。

接下来,让我们来看看如何使用协议发送 SOSL 和 SOQL 查询。 

使用协议发送查询

您可以编写所有想要的搜索查询。除非您使用诸如 REST、SOAP 或 Apex 之类的 API 协议来发送查询,否则搜索查询没有任何用处。 

记住:某些协议与某些 API 能更好地兼容。一般来说,我们使用 SOQL 进行查询,使用 SOSL 进行搜索。

  • Query (REST) 和 query() (SOAP) — 针对指定对象执行 SOQL 查询并返回与指定条件匹配的数据。
  • Search (REST) 和 search() (SOAP) — 针对组织的数据执行 SOSL 文本字符串搜索。

还可以使用更多资源来执行其他常见搜索任务,例如自动建议记录、文章和查询。另外,如果您不想使用 SOSL 或 SOQL,请考虑在 REST 中使用参数化搜索。您可以在 URL 中使用参数(即名称),而不是 URL 中的搜索字符串。

对于 Apex,您可以通过将语句括在方括号的方式来动态使用 SOQL 或 SOSL。您还可以使用搜索类来执行动态 SOSL 查询,并使用搜索命名空间来获取搜索结果和建议结果。

我们在本单元的资源部分附加了一个常见列表。我们将在下一个单元中向您介绍如何使用协议,以帮助您快速上手。请务必阅读开发人员文档以获取所有信息和示例。 

资源

在 Salesforce 帮助中分享 Trailhead 反馈

我们很想听听您使用 Trailhead 的经验——您现在可以随时从 Salesforce 帮助网站访问新的反馈表单。

了解更多 继续分享反馈