课程章节介绍
同学们,今天我们来聊聊动态SOSL。所谓动态SOSL,就是在程序运行时,用Apex代码自己去拼接SOSL搜索语句,而不是像静态查询那样直接写在方括号里。这样做的好处是,你可以根据用户输入或业务逻辑,灵活地构建搜索条件。
最常用的做法是调用 `Search.query` 方法,把拼好的SOSL字符串传进去。它会返回一个“列表的列表”,也就是 `List>`。外层列表对应不同的查询子句,内层列表就是搜索到的记录。
另外,如果你需要获取搜索结果中出现的上下文短文段,可以使用 `Search.find` 方法。这个方法会返回 `Search.SearchResult` 对象,接着调用它的 `get` 方法来提取某个指定对象类型的结果,再在每个结果上使用 `getSnippet` 方法,就能拿到那段高亮的上下文文本了。
做动态拼接时,一定要小心SOSL注入的问题,尤其是用户输入的内容可能包含恶意单引号。Apex提供了一个 `escapeSingleQuotes` 方法,记得用它来转义这些特殊字符,保证查询安全。
在系统资源使用上,动态SOSL和静态SOSL受到的限制是一样的,比如每笔查询返回的行数上限、搜索的对象上限等等,都遵循相同的调控器规则,所以不用担心资源分配的不公平。
好了,掌握了这些,你就可以在需要的时候,用动态方式去构建功能强大的全局搜索了。
关键词
Apex
Salesforce
Developer Guide