Salesforce SOSLの基礎
SalesforceのSOSL(Salesforce Object Search Language)は、Salesforce内の複数のオブジェクトやフィールドを一括して検索するためのクエリ言語です。特定の文字列やキーワードを効率的に検索するために使われます。以下はSOSLの基礎についての説明です。
1. SOSLとは
- 目的: キーワードを使ってSalesforceの複数のオブジェクトやフィールドを検索する。
- 検索範囲: 主にテキストフィールド(名前、メール、カスタムテキストフィールドなど)が対象。
- 使用例: ユーザーが「ABC」というキーワードを入力したときに、関連するリード、取引先責任者、商談などを一度に検索。
2. SOSLの基本構文
FIND '検索キーワード' IN 検索対象 RETURNING オブジェクト名 (フィールドリスト)
例
以下は「Acme」というキーワードを検索するSOSLクエリの例です:
FIND 'Acme' IN ALL FIELDS RETURNING Account (Id, Name), Contact (Id, FirstName, LastName)
FIND 'Acme'
: 「Acme」を検索。IN ALL FIELDS
: すべてのフィールドを対象に検索(限定することも可能)。RETURNING
: 検索対象のオブジェクトと取得するフィールドを指定。
3. 主なキーワード
FIND
: 検索する文字列を指定(例:'検索ワード'
)。IN
: 検索対象を指定。ALL FIELDS
: すべてのフィールド。NAME FIELDS
: 名前フィールド(例えば取引先名や担当者名)。EMAIL FIELDS
: メールアドレスフィールド。
RETURNING
: 検索結果に含めるオブジェクトとフィールドを指定。
4. 特徴と制限
特徴
- SOSLは全文検索エンジンを使用しており、複数のオブジェクトを対象とした高速な検索が可能。
- Salesforceの標準およびカスタムオブジェクトをサポート。
- 複数のオブジェクトから同時にデータを取得可能。
制限
- 特定のオブジェクトやフィールドを除外することはできない。
- WHERE句のような条件指定は利用できない(SOQLとは異なる)。
- SOSLは最大2000件の結果を返す。
5. SOSLを使う場面
- Salesforceで検索バーのような機能を実現したい場合。
- 複数のオブジェクトにまたがってデータを検索したい場合。
- ユーザー入力を基にデータを探すユースケース(例: サポートポータルやカスタムUI)。
6. ApexでのSOSLの使用例
SOSLはApexコード内で使用することも可能です。
コード例
List<List<SObject>> searchResults = [
FIND 'Acme' IN ALL FIELDS
RETURNING Account (Id, Name), Contact (Id, FirstName, LastName)
];
for (SObject sObj : searchResults[0]) {
// Accountオブジェクトの結果処理
}
for (SObject sObj : searchResults[1]) {
// Contactオブジェクトの結果処理
}