Salesforce SOSLの基礎

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オブジェクトの結果処理
}

 

  • List<List<SObject>>: 複数オブジェクトの結果をリストで取得。
  • 各オブジェクトの結果をインデックス(searchResults[0]searchResults[1])で分けてアクセス可能。

まとめ

SOSLは、Salesforceの広範な検索を効率化する強力なツールです。SOQLが1つのオブジェクトにフォーカスしてデータをクエリするのに対し、SOSLは複数のオブジェクトを対象にキーワードベースの検索を行います。要件に応じてSOQLとSOSLを使い分けることで、Salesforce開発を効果的に進められます。