Search (SOSL)
Execute SOSL searches across multiple objects with a fluent search builder.
Execute Search
Go
result, err := client.Search().Execute(ctx,
"FIND {Acme} IN NAME FIELDS RETURNING Account(Id, Name), Contact(Id, Name)")
if err != nil {
log.Fatal(err)
}
for _, record := range result.SearchRecords {
fmt.Printf("Found: %s (ID: %s)\n", record.Name, record.ID)
}
Search Builder
Build searches programmatically:
Go
// Build a SOSL search query
sosl := search.NewBuilder("Acme").
In("NAME").
ReturningWithFields("Account", "Id", "Name", "Industry").
ReturningWithFields("Contact", "Id", "FirstName", "LastName").
Limit(20).
Build()
result, err := client.Search().Execute(ctx, sosl)
Parameterized Search
Go
result, err := client.Search().Parameterized(ctx, search.ParameterizedSearchRequest{
Query: "Acme",
Fields: []string{"Name", "Phone"},
SObjects: []search.SObjSpec{
{Name: "Account", Fields: []string{"Id", "Name"}},
{Name: "Contact", Fields: []string{"Id", "Email"}},
},
Limit: 50,
})
Search Scope Options
| Scope | Description |
|---|---|
ALL |
Search all fields |
NAME |
Search name fields only |
EMAIL |
Search email fields only |
PHONE |
Search phone fields only |
SIDEBAR |
Sidebar search scope |
Builder Methods
| Method | Description |
|---|---|
In(scope) |
Set search scope |
Returning(objects...) |
Objects to return |
ReturningWithFields(obj, fields...) |
Object with specific fields |
WithDivision(division) |
Filter by division |
Limit(n) |
Maximum results |