この記事では以下のことについて記述しています。
- SOSLの特徴(SOQLとの比較)
- SOSLの構文と実行例
SOSLの特徴
SOSLはSOQLと同様、レコードを取得する際に用いられます。
SOSLの特徴として、すべてのオブジェクトを検索できることが挙げられます(SOQLは1つのオブジェクトしか照会できない)。
SOSLの構文
SOSL の構文は以下のような形になります。
FIND '検索対象となるワード' IN 検索する項目範囲 RETURNING 検索するオブジェクトとその項目
まず、FIND ‘word’ で検索対象となるワードを指定します。
IN … は省略可能な部分で、検索する項目範囲を指定します。以下のいずれかを設定可能です。
- ALL FIELDS(デフォルト)・・・検索可能なすべての項目を検索します
- NAME FIELDS・・・標準オブジェクトの名前項目のみを検索します
- EMAIL FIELDS・・・メール項目のみを検索します
- PHONE FIELDS・・・電話番号項目のみを検索します
- SIDEBAR FIELDS・・・サイドバーのドロップダウンリストに表示される有効なレコードを検索します
RETURNING … では、検索の対象となるオブジェクトと項目を指定します。
SOSLでは複数のオブジェクトを検索できるため、検索結果は各オブジェクトごとのリスト List<List<SObject>> の形で返されます(SOQLだと主に List<SObject> の形で返されます)。
実行例
SOSL の実行方法として、以下の2つのパターンがあります。
- 角かっこ表記
- Search.query()
ちなみにSOQLだと、角かっこ表記と、Database.query() の2パターンです。
角かっこ表記
List<List<SObject>> results = [FIND 'sample' IN NAME FIELDS RETURNING Account];
Search.query()
List<List<SObject>> results = Search.query('FIND {sample} IN NAME FIELDS RETURNING Account');
コメント