この記事は新社会人のSalesforce学習記録とその他 Advent Calendar 2025の5日目の記事です。
SOSLについて学習していきます。
SOSLとは
SOQLでは一つのオブジェクトを検索するのに対して、SOSLでは多くのオブジェクトを横断して検索することができます。

図にするとこんな感じでしょうか。
基本の書き方
例えばAccountやContactのNameから「AdventCalendar」と名の付くレコードを調べる場合は、
FIND 'AdventCalendar' IN NAME FIELDS RETURNING Account (Name, Phone),Contact (Name);
こんな風になります。
動きとしては、
➀FINDで指定した語句を
➁INで指定した項目(今回はName)から探し出し、
➂該当するレコードのRETURNINGに入っている項目を返す
といった感じです。
3つの句から構成されています。
FIND(必須)
探したい単語をこのFINDの後につけます。
FINDのみで一応動きます。(これだけで使われることはほとんどないようですが...)
IN(任意)
どんな項目を調べるかを指定することができます。
IN 〇〇といった感じで使われます。例えばIN NAME FIELDSとか。
全部ならIN ALL FIELDSになります。特に指定しない場合は自動的にこれになるようです。
RETURNING
返すレコードの項目を指定します。複数のオブジェクトを同時に指定することができます。
良い点
2つあります。
1つ目は複数のオブジェクトを一度に探すことができることです。
SOQLでは文一つに対して探せるオブジェクトは一つでしたが、SOSLでは一つの文でたくさんのオブジェクトから当てはまるものを探すことができます。どのオブジェクトかわからなくても調べられるのが強みです。
2つ目は、オブジェクトごとに返す項目を変えられることです。
ある項目ではNameを、別の項目からはIndustryを返すといったことが可能です。
悪い点
こちらも2つ。
一つ目は、SOQLよりも扱う用途が限定的である点です。
SOQLならデータを好きなようにいじれる(追加することも変更することも消すこともできる)わけですが、SOSLでは探すことしかできないです。実際、Trailheadなどで勉強していてもSOSLはよく使われている割にSOSLはほとんど見かけませんでした。
2つ目は処理結果がList<List<sObject>>とかいうものでそこそこ面倒である点です。
実際に項目を使用するためにはfor文などで入っているものを、オブジェクトごとなどで一つずつ分けていく必要があります。SOQLならListとかでそのまま使うことができます。
ただし、強みはそれぞれ違うしSOSLは悪いものではありません。
まとめ
SOSLでは
・FIND(必須)
・IN(任意)
・RETURNNIG(任意)
の3つの句で構成されている。
複数のオブジェクトを一度に検索することができる。
List<List<sObject>>型で返される。