SOSLを使ったクエリ、SOQLとの比較【Apex】

aerial photography of river between cliffs Apex
Photo by Wendelin Jacober on Pexels.com

この記事では以下のことについて記述しています。

  • 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');

コメント

タイトルとURLをコピーしました