239 lines
5.2 KiB
Markdown
239 lines
5.2 KiB
Markdown
|
|
# 执行 SOSL 搜索
|
|||
|
|
|
|||
|
|
## 接口概述
|
|||
|
|
|
|||
|
|
执行 SOSL (Salesforce Object Search Language) 全文搜索,在多个对象中快速查找匹配的记录。
|
|||
|
|
|
|||
|
|
## 基本信息
|
|||
|
|
|
|||
|
|
| 属性 | 值 |
|
|||
|
|
|------|-----|
|
|||
|
|
| 接口名称 | 执行 SOSL 搜索 |
|
|||
|
|
| 接口路径 | `/partner/search` |
|
|||
|
|
| 请求方法 | `POST` |
|
|||
|
|
| Content-Type | `application/json` |
|
|||
|
|
| 需要认证 | 是 |
|
|||
|
|
| 所属模块 | datai-salesforce-partner |
|
|||
|
|
|
|||
|
|
## 请求参数
|
|||
|
|
|
|||
|
|
### 请求体 (Request Body)
|
|||
|
|
|
|||
|
|
| 参数名 | 类型 | 必填 | 说明 | 示例值 |
|
|||
|
|
|--------|------|------|------|--------|
|
|||
|
|
| sosl | String | 是 | SOSL 搜索语句 | `FIND {Acme} IN ALL FIELDS RETURNING Account(Id, Name), Contact(Id, Name)` |
|
|||
|
|
|
|||
|
|
### 请求示例
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"sosl": "FIND {Acme} IN ALL FIELDS RETURNING Account(Id, Name, BillingCity), Contact(Id, FirstName, LastName, Email)"
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 响应参数
|
|||
|
|
|
|||
|
|
### 响应体 (Response Body)
|
|||
|
|
|
|||
|
|
| 参数名 | 类型 | 说明 |
|
|||
|
|
|--------|------|------|
|
|||
|
|
| code | Integer | 响应状态码,200 表示成功 |
|
|||
|
|
| msg | String | 响应消息 |
|
|||
|
|
| data | Object | 响应数据 |
|
|||
|
|
|
|||
|
|
### data 对象结构
|
|||
|
|
|
|||
|
|
| 参数名 | 类型 | 说明 |
|
|||
|
|
|--------|------|------|
|
|||
|
|
| searchRecords | Array | 搜索结果列表 |
|
|||
|
|
| success | Boolean | 是否成功 |
|
|||
|
|
| errors | Array | 错误信息列表 |
|
|||
|
|
|
|||
|
|
### searchRecords 对象结构
|
|||
|
|
|
|||
|
|
| 参数名 | 类型 | 说明 |
|
|||
|
|
|--------|------|------|
|
|||
|
|
| objectName | String | 对象名称 |
|
|||
|
|
| records | Array | 该对象的匹配记录列表 |
|
|||
|
|
|
|||
|
|
### 响应示例
|
|||
|
|
|
|||
|
|
**成功响应**
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"code": 200,
|
|||
|
|
"msg": "操作成功",
|
|||
|
|
"data": {
|
|||
|
|
"searchRecords": [
|
|||
|
|
{
|
|||
|
|
"objectName": "Account",
|
|||
|
|
"records": [
|
|||
|
|
{
|
|||
|
|
"Id": "001xx000003DHb2AAG",
|
|||
|
|
"Name": "Acme Corporation",
|
|||
|
|
"BillingCity": "San Francisco"
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"Id": "001xx000003DHb3AAH",
|
|||
|
|
"Name": "Acme Solutions",
|
|||
|
|
"BillingCity": "New York"
|
|||
|
|
}
|
|||
|
|
]
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"objectName": "Contact",
|
|||
|
|
"records": [
|
|||
|
|
{
|
|||
|
|
"Id": "003xx000003DHb2AAG",
|
|||
|
|
"FirstName": "John",
|
|||
|
|
"LastName": "Acme",
|
|||
|
|
"Email": "john.acme@example.com"
|
|||
|
|
}
|
|||
|
|
]
|
|||
|
|
}
|
|||
|
|
],
|
|||
|
|
"success": true,
|
|||
|
|
"errors": []
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**错误响应**
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"code": 500,
|
|||
|
|
"msg": "SOSL 搜索失败: Invalid search query",
|
|||
|
|
"data": null
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 错误码
|
|||
|
|
|
|||
|
|
| 错误码 | 说明 | 处理建议 |
|
|||
|
|
|--------|------|----------|
|
|||
|
|
| 400 | 请求参数错误 | 检查 sosl 语句格式是否正确 |
|
|||
|
|
| 401 | 认证失败 | 检查 Salesforce 认证信息是否有效 |
|
|||
|
|
| 500 | 服务器内部错误 | 检查 SOSL 语句语法是否正确 |
|
|||
|
|
|
|||
|
|
## 使用说明
|
|||
|
|
|
|||
|
|
### SOSL 语法结构
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
FIND {搜索词} IN {搜索范围} RETURNING {对象列表}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 搜索范围选项
|
|||
|
|
|
|||
|
|
| 搜索范围 | 说明 |
|
|||
|
|
|----------|------|
|
|||
|
|
| ALL FIELDS | 所有可搜索字段 |
|
|||
|
|
| NAME FIELDS | 名称字段 |
|
|||
|
|
| EMAIL FIELDS | 邮箱字段 |
|
|||
|
|
| PHONE FIELDS | 电话字段 |
|
|||
|
|
| SIDEBAR FIELDS | 侧边栏字段 |
|
|||
|
|
|
|||
|
|
### SOSL 语法示例
|
|||
|
|
|
|||
|
|
1. **基本搜索**
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"sosl": "FIND {Acme} IN ALL FIELDS RETURNING Account(Id, Name)"
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
2. **多对象搜索**
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"sosl": "FIND {Technology} IN ALL FIELDS RETURNING Account(Id, Name, Industry), Contact(Id, FirstName, LastName), Opportunity(Id, Name, Amount)"
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
3. **指定搜索范围**
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"sosl": "FIND {john@example.com} IN EMAIL FIELDS RETURNING Contact(Id, FirstName, LastName, Email), Lead(Id, FirstName, LastName, Email)"
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
4. **限制结果数量**
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"sosl": "FIND {Acme} IN NAME FIELDS RETURNING Account(Id, Name, BillingCity LIMIT 10), Contact(Id, FirstName, LastName LIMIT 5)"
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
5. **带条件的搜索**
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"sosl": "FIND {Technology} IN ALL FIELDS RETURNING Account(Id, Name, Industry WHERE Industry = 'Technology' LIMIT 10)"
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
6. **短语搜索**
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"sosl": "FIND {\"San Francisco\"} IN ALL FIELDS RETURNING Account(Id, Name, BillingCity)"
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
7. **通配符搜索**
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"sosl": "FIND {Acme*} IN ALL FIELDS RETURNING Account(Id, Name)"
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### SOSL 与 SOQL 的区别
|
|||
|
|
|
|||
|
|
| 特性 | SOSL | SOQL |
|
|||
|
|
|------|------|------|
|
|||
|
|
| 搜索类型 | 全文搜索 | 精确查询 |
|
|||
|
|
| 搜索范围 | 多个对象 | 单个对象 |
|
|||
|
|
| 搜索字段 | 可搜索字段 | 任意字段 |
|
|||
|
|
| 性能 | 适合模糊搜索 | 适合精确查询 |
|
|||
|
|
| 使用场景 | 全局搜索、快速查找 | 数据报表、复杂查询 |
|
|||
|
|
|
|||
|
|
### 注意事项
|
|||
|
|
|
|||
|
|
1. **搜索词限制**
|
|||
|
|
- 搜索词长度至少 2 个字符
|
|||
|
|
- 不区分大小写
|
|||
|
|
- 支持通配符 (*)
|
|||
|
|
|
|||
|
|
2. **结果限制**
|
|||
|
|
- 每个对象最多返回 200 条记录
|
|||
|
|
- 总记录数限制为 2000 条
|
|||
|
|
- 建议使用 LIMIT 限制结果数量
|
|||
|
|
|
|||
|
|
3. **性能优化**
|
|||
|
|
- 避免使用过于宽泛的搜索词
|
|||
|
|
- 合理使用搜索范围缩小结果集
|
|||
|
|
- 限制返回的对象和字段数量
|
|||
|
|
|
|||
|
|
4. **特殊字符**
|
|||
|
|
- 短语搜索需要使用双引号
|
|||
|
|
- 转义特殊字符:\, *, ", '
|
|||
|
|
- 空格表示 AND 关系
|
|||
|
|
|
|||
|
|
## 相关接口
|
|||
|
|
|
|||
|
|
- [执行 SOQL 查询](./001-query.md)
|
|||
|
|
- [查询所有记录(包括已删除的)](./002-query-all.md)
|
|||
|
|
- [获取查询结果的下一页](./003-query-more.md)
|
|||
|
|
|
|||
|
|
## 更新日志
|
|||
|
|
|
|||
|
|
| 版本 | 日期 | 更新内容 | 作者 |
|
|||
|
|
|------|------|----------|------|
|
|||
|
|
| 1.0.0 | 2026-01-30 | 初始版本 | AI Assistant |
|