yujiroのプログラミング

勉強内容をアウトプットし、サボらないようにする為のブログ

<DAY213>SOSLについて

\ Follow me!! /

●9/22(日)
●学習日数 213日
●学習時間(本日)時間
●累計学習時間 905.0時間
●一日あたりの平均学習時間 4.28時間

f:id:yujiro0320:20190904163314p:plain

SOSLとは

Salesforce Object Search Languageの略

複数のオブジェクトを検索する時に使用

SOQLはオブジェクト内の項目に対して検索するのに対して、
SOSLはオブジェクトをまたいで検索ができる。

SOSL が最も役に立つのは、データがどの項目やオブジェクトに存在しているかが正確にわかっておらず、複数のオブジェクトにわたって検索する必要がある場合です。それらのオブジェクトが関連していない場合には特にそれが当てはまります。

基本的な構文

SOSL が使用する検索構文はもっとシンプルで、SOQL の SELECT キーワードを使用しません。代わりに FIND キーワードを使用します。基本的なクエリは次のようになります。

FIND ‘grand*’ IN ALL FIELDS RETURNING Account(Name), Contact(LastName, FirstName, Email)

中身を見てみる。

FIND句

検索語の途中または末尾で、0 個以上の文字の代わりに使用できます

? 検索語の途中または末尾にある 1 文字のみの代わりに使用できます

IN 句

検索グループを指定.
ALLFIELDSだと全ての項目に対して検索するように見えるけど、
RETURNING句で指定するオブジェクト内容によっては、全てではない。

具体的には、
(1)返されるオブジェクトが記事、ドキュメント、フィードコメント、フィード項目、ファイル、商品、またはソリューションであれば、すべての項目が検索。
(2)テキストベース以外のさまざまな項目が含まれているほとんどの標準オブジェクトやカスタムオブジェクトを検索する場合は、名前、メール、電話番号、およびサイドバーの項目のみを検索する。

ALL FIELDS
NAME FIELDS 名前項目
PHONE FIELDS 電話項目
 

RETURNING 句

どのデーターを返し、どのオブジェクトを検索するかを指定。
検索では、オブジェクトのすべての検索可能な項目が対象だが、返される結果には括弧内に指定された項目のみが含まれる。
オブジェクト名を指定するときに括弧内に項目名を指定しなかった場合、検索で一致が見つかると、そのオブジェクトの ID のみが返されます。

その他

他にも省略可能なオプションがある、
developer.salesforce.com

クエリエディタで SOSL 検索を行うとき

クエリエディタで SOSL 検索を行うときには引用符ではなく中括弧を使用する必要があります。Apex コードで検索を行うときには'一重引用符'を使用します。

FIND {joey} IN ALL FIELDS RETURNING Account(Name), Contact(LastName, FirstName), Document(Name)