SOSL语句结构如下
FIND {SearchQuery}
[ IN SearchGroup ]
[ RETURNING FieldSpec [[ toLabel(fields)] [convertCurrency(Amount)] [FORMAT()]] ]
[ WITH DivisionFilter ]
[ WITH DATA CATEGORY DataCategorySpec ]
[ WITH SNIPPET[(target_length=n)] ]
[ WITH NETWORK NetworkIdSpec ]
[WITH PricebookId ]
[ WITH METADATA ]
[ LIMIT n ]
[ UPDATE [TRACKING], [VIEWSTAT] ]
我们基于这个内容分开来看
语句 | 描述 | 备注 |
---|---|---|
FIND | 来指定要搜索的单词或短语。一个搜索查询包括字面的单词或 | |
短语,也可以包括通配符和逻辑运算符(AND, OR, 和 AND NOT)。 | FIND是必填字段,类似于SOQL中where 某个字段为什么值的功能 | |
IN | 在SOSL查询中,你可以使用IN 可选子句指定要搜索的文本字段类型。例如,你可以搜索姓名、电子邮件、电话、侧边栏或所有字段。search group包含的内容查看下述表格。 | 这个通常用于你想搜索的内容已经知道哪个类型中搜索,比如想要搜索 Account, Opportunity所有Name中包含 Zhang san的,就可以设置IN NAME FIELDS |
RETURNING | 搜索结果中要返回的信息。一个或多个对象的列表;在每个对象中,一个或多个字段的列表。举个例子:下面的例子用来返回Contact表的 FirstName以及LastName和Account以及Lead的FirstName FIND {test} RETURNING Contact(FirstName, LastName), | |
Account, Lead(FirstName) | 最多只能搜索2000条 | |
WHERE | 对结果集进行过滤。返回基于指定条件的数据。必须包括一个至少有一个指定的 | |
字段。下面的例子并不是正确的语法。RETURNING Account (WHERE name like 'test') 下面的例子是正确的: RETURNING Account (Name, Industry WHERE Name like 'test') | ||
WITH | 当Affected by Divisions权限开启时,可以基于Divisions进行搜索 | |
WITH DATA CATEGORY | 仅用于salesforce的Knowledge Article以及Question表,可以进行Data Category进行过滤 | |
WITH SNIPPET | 用于article, case, feed, 以及 idea搜索。在搜索结果页面上,文章标题下面的摘录显示了与搜索查询相匹配的术语,并在周围文本的背景中突出显示。 | |
WITH NETWORK | 针对 Community Cloud环境,基于Community Cloud Id进行过滤 | |
WITH PriceBookId | 针对Product表,基于PriceBook进行过滤 | |
WITH METADATA | 指定返回的结果集中是否返回METADATA信息 | |
LIMIT | 设置返回的数据量 |
search group包含以下内容
Search Group | Description |
---|---|
ALL FIELDS | 搜索所有的可搜索的字段,这个也是默认的选项,如果SOSL中没有IN关键字,就搜索全部 |
EMAIL FIELDS | 搜索所有的 Email字段 |
NAME FIELDS | 只能搜索标准/自定义表的Name字段。除此以外,还支持以下字段:Account: Website, Site, NameLocal |
Asset: SerialNumber | |
Case: SuppliedName, SuppliedCompany, Subject | |
Contact: AssistantName, FirstNameLocal, LastNameLocal, AccountName | |
Event: Subject | |
Lead: Company, CompanyLocal, FirstNameLocal, LastNameLocal | |
Note: Title | |
PermissionSet: Label | |
Report: DescriptionTagDefinition: NormName | |
Task: Subject | |
User: CommunityNickname | |
PHONE FIELDS | 只能搜索 Phone类型字段 |
SIDEBAR FIELDS | 搜索侧边栏下拉列表中所列的有效记录。 |
SOSL语句分析
SOSL语句 | 描述 |
---|---|
FIND {test} | 系统中搜索所有test内容,返回匹配数据的ID信息 |
FIND {MyProspect AND ("John Smith" OR MyCompany)} | 系统中搜索包含 John Smith 或者 My Company并且 MyProspect内容,返回匹配数据的ID信息 |
FIND {[email protected]} IN EMAIL FIELDS | 在所有的 Email类型字段中搜索[email protected],返回匹配的数据的ID的信息 |
FIND {Joe Smith} IN Name Fields RETURNING lead | 返回Lead表中的ID信息,条件为Name字段包含 Joe Smith |
FIND {Joe Smith} | |
IN Name Fields | |
RETURNING lead(name, phone) | 返回Lead表中的Name以及Phone字段,条件为Name字段包含Joe Smith |
FIND {MyProspect} RETURNING Contact(FirstName, LastName LIMIT 20), Account(Name, Industry LIMIT 10), Opportunity LIMIT 50 | 搜索 MyProspect,返回匹配的 Contact的FirstName以及LastName,最多只返回20条;返回匹配的Account的Name和Industry,最多只返回10条,返回Opportunity,三个表最多只返回50条 |
FIND {test} | |
RETURNING Account (id WHERE xx__c = 'AAA') | 搜索 test,返回匹配的Account数据,Account数据要求 xx__c为AAA |
注: