优化搜索结果
学习目标
完成本单元后,您将能够:
- 描述如何创建高效的文本搜索,返回更有针对性的搜索结果。
- 描述如何为搜索创建自动建议功能。
- 列出管理员可以为用户增强搜索结果的更多操作。
创建高效的文本搜索
搜索查询成本高昂。搜索的数据越多,返回的结果越多,整个操作的速度就越慢。
如何应对搜索缓慢?使用两种基本策略。
- 限制搜索哪些数据
- 限制返回哪些数据
但您还不想过度深究。如果您的效率过高,那么搜索的用处就没那么大了。用户不喜欢明明知道存在记录,但是却找不到记录。
以下是为让客户满意提供的建议。让我们从 SOSL 示例开始,了解基本概念。
要限制搜索哪些数据,请使用 IN SearchGroup。您可以搜索姓名、电子邮件、电话、侧栏或所有字段。例如,如果您只想搜索电子邮件,则只搜索电子邮件字段。
FIND {jsmith@cloudkicks.com} IN EMAIL FIELDS RETURNING Contact
现在让我们谈谈搜索结果。没错,用户认为他们想查看所有结果。但如果有成千上万的记录,就需要重新考虑这个场景了。考虑如何限制结果或至少将结果分解为更小、更易于消化的块。
再回到 SOSL,您可以使用 RETURNING FieldSpec
来指定返回哪些数据。我们在上一单元中使用过这个字段,现在讨论这个字段包含的更高级元素。
-
ObjectTypeName
— 指定返回的对象。 -
FieldList
— 指定返回的字段。 -
ORDER By
— 指定按哪些字段对结果进行排序。您还可以指定升序或降序。 -
LIMIT n
— 为指定对象设置返回的最大记录数。 -
OFFSET n
— 在查询返回的结果集中设置起始行偏移量。
需要了解的内容很多。我们一步步来完成。
步骤 | 目标 | 示例 |
---|---|---|
1 | 指定返回的对象。 |
FIND {Cloud Kicks} RETURNING Account |
2 | 指定返回的字段。 |
FIND {Cloud Kicks} RETURNING Account(Name, Industry) |
3 | 按字段对结果进行升序排序,这是默认设置。 |
FIND {Cloud Kicks} RETURNING Account (Name, Industry ORDER BY Name) |
4 | 设置返回的最大记录数 |
FIND {Cloud Kicks} RETURNING Account (Name, Industry ORDER BY Name LIMIT 10) |
5 | 在结果中设置起始行偏移量。 |
FIND {Cloud Kicks} RETURNING Account (Name, Industry ORDER BY Name LIMIT 10 OFFSET 25) |
现在您已经掌握了其中的技巧,让我们尝试一些 WITH 语句,通过某些预定义的字段来筛选记录。通过对结果进行预筛选,您可以减少返回的结果并提高性能。此外,用户不需要费力浏览那么多的结果。SOSL 提供什么类型的 WITH 筛选器?嗯,有以下几种:
资源 | 示例 |
---|---|
WITH DIVISION |
FIND {Cloud Kicks} RETURNING Account (Name, Industry) WITH DIVISION = 'Global' |
WITH DATA CATEGORY |
FIND {race} RETURNING KnowledgeArticleVersion (Id, Title WHERE PublishStatus='online' and language='en_US') WITH DATA CATEGORY Location__c AT America__c |
WITH NETWORK |
FIND {first place} RETURNING User (Id, Name), FeedItem (id, ParentId WHERE CreatedDate = THIS_YEAR Order by CreatedDate DESC) WITH NETWORK = '00000000000001' |
WITH PRICEBOOK |
Find {shoe} RETURNING Product2 WITH PricebookId = '01sxx0000002MffAAE' |
都了解了吗?似乎您已经准备好处理 SOQL 中的工作方式了。好在这几乎是一样的。SOQL 类似 SELECT
语句的语法,可以完成与 SOSL 相同的事情。您可以在开发人员文档中查阅完整的语法列表,包括按数据类别或网络进行限制的方式。以下就讨论过的一些语法提供了一份有用的对比表。
我想要... | SOSL | SOQL |
---|---|---|
限制搜索的数据 | IN SearchGroup |
WHERE |
指定响应中返回的数据 | Returning FieldSpec |
SELECT |
结果排序 |
ORDER BY LIMIT OFFSET
|
ORDER BY LIMIT OFFSET
|
按数据类别筛选 | WITH DATA CATEGORY |
WITH DATA CATEGORY |
显示建议的结果
还记得我们在第一单元中讨论记录自动建议和搜索越野跑信息的精湛技能吗?让我们详细地回顾一下这个概念。
作为复习,您可以使用 API,这样用户在搜索栏中输入建议时就会显示出来。建议返回标题与用户输入内容相匹配的记录。此功能可让您的用户更快地抵达想要的结果,这才是搜索的终极目标,对吧?
为了利用这个特性,以下是首选的 REST 资源。每个资源都具有相似的语法和参数,但请使用最适合您用例的资源。
- Search Suggested Records — 返回名称与用户搜索字符串匹配的建议记录列表。建议资源为用户提供了一个快捷方式,可以在执行完整搜索之前直接导航到可能的相关记录。
- Search Suggested Article Title Matches — 返回标题与用户搜索查询字符串匹配的 Salesforce Knowledge 文章列表。提供快捷方式,方便用户执行搜索之前可直接导航到可能相关的文章。
- SObject Suggested Articles for Case — 为个案返回 Salesforce Knowledge 建议的文章列表。
将使用 Search Suggested Article Title Matches 选项作为建议工作原理的示例。这是基本语法,请查看 API 文档以获取可用参数的完整列表。
/vXX.X/search/suggestTitleMatches?q=search string&language=article language&publishStatus=article publication status
现在我们通过具体的例子来使用语法。请求如下所示。
/vXX.X/search/suggestTitleMatches?q=race+tips&language=en_US&publishStatus=Online
还有 JSON 响应。
{ "autoSuggestResults" : [ { "attributes" : { "type" : "KnowledgeArticleVersion", "url" : "/services/data/v30.0/sobjects/KnowledgeArticleVersion/ka0D00000004CcQ" }, "Id" : "ka0D00000004CcQ", "UrlName" : "tips-for-your-first-trail-race", "Title" : "race tips", "KnowledgeArticleId" : "kA0D00000004Cfz", "isMasterLanguage" : "1", } ], "hasMoreResults" : false }
与管理员合作
优化搜索结果是一项团队运动。幸运的是,您知道最合适的助手人选是您的 MVP 管理员。这是通过与您的管理员合作,在增强搜索结果方面赢得一些简单积分的方法。
第一步是建立和优化同义词组,同义词组包含在搜索中被同等对待的单词或短语。搜索同义词组中的一个词会返回该组中所有词的结果。例如,搜索 USB 会返回同义词组中所有词的结果,其中包含 USB、指状储存器、闪盘驱动器以及记忆棒。您可能已经看到了同义词组的价值。用户可以使用一个搜索词进行搜索,即使没有使用“正确的”搜索词,也可以得到想要的结果。无需重命名产品。
- 从“设置”中,在“快速查找”框中输入“同义词”,然后选择同义词。
- 在“自定义同义词组”下面,单击新建,创建同义词组,或单击现有同义词组旁的编辑。
- 每组添加 2-6 个同义词。同义词可以是单个词或词组。无特殊字符。
有大量同义词要导入?利用参考部分列出的元数据 API。
现在已经处理了同义词组,下一步是推广 Knowledge 文章的搜索词。
提升的搜索词对常用于解决支持问题的文章要获取更高的关注度很有帮助。设置很简单。管理员找到精品文章,然后将文章中的词添加到“提升的搜索词”相关列表。输入这些关键字的用户会在搜索结果的顶部看到所选文章。
例如,您的支持团队撰写了一篇关于如何退回不合脚鞋子的绝佳文章。管理员进入并更新文章,确保文章包含提升搜索词退回和不合脚。当用户搜索这些词时,文章就会弹出。
可以通过一些操作帮助您的管理员微调提升搜索词。
- 单个词的最大字符数为 100。为了在匹配用户的搜索词时获得最佳结果,请将每个提升搜索词限制为几个关键字。
- 不要创建过多的提升搜索词。为了获得最佳结果,请选择性地使用关键字,即创建有限数量的提升搜索词和有限数量的提升文章。添加太多的提升搜索词可能会影响用户的相关性排名,导致不必要的结果。您的组织最多可以创建 2,000 个提升词。
- 只要某个提升词中的所有关键词出现在用户的搜索词中,不管是什么顺序,文章搜索就会匹配这个词。每个关键词必须完全匹配。
我们总结一下
搜索可能不是 Salesforce 最吸引人的,但它却是使用频率最高的功能。
希望通过这个模块,您能够逐渐理解此模块背后的力量。您已经学习了搜索架构、如何为一些常见用例构建搜索解决方案以及如何创建高效的搜索查询的相关知识。现在,继续构建让用户惊叹的搜索吧。