この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

動的 SOSL

動的 SOSL は、Apex コードを使用して、実行時に SOSL 文字列の作成を参照します。動的 SOSL によって、さらに柔軟なアプリケーションの作成が可能になります。たとえば、エンドユーザの入力に基づいた検索を作成したり、さまざまな項目名のレコードを更新したりできます。

実行時に動的 SOSL クエリを作成するには、search query メソッドを使用します。次に例を示します。

次の例では、単純な SOSL クエリ文字列を実行しています。

動的 SOSL ステートメントは、sObject のリストを評価します。ここでは、各リストは特定の sObject データ型の検索結果を含みます。結果リストは常に、動的 SOSL クエリで指定された順序と同じ順序で返されます。上記の例では、Account の結果が最初、次に Contact、Lead と続きます。

通常の割り当てステートメントや for ループなど、インライン SOSL クエリが使用可能な場合はいつでも、search query メソッドを使用できます。結果は、静的 SOSL クエリの処理とほぼ同様の方法で処理されます。

動的 SOSL クエリには、静的クエリと同じガバナ制限があります。ガバナ制限についての詳細は、「実行ガバナと制限」を参照してください。

SOSL クエリの構文の詳細は、『SOQL および SOSL リファレンス』の「Salesforce Object Search Language (SOSL)」を参照してください。

スニペットを返す動的 SOSL の使用

検索結果内でより多くのレコードのコンテキストを提供するには、SOSL WITH SNIPPET 句を使用します。スニペットにより、探しているコンテンツを容易に特定できるようになります。スニペットの生成方法についての詳細は、『SOQL および SOSL リファレンス』「WITH SNIPPET」を参照してください。

実行時に動的 SOSL クエリで SOSL WITH SNIPPET 句を使用するには、Search.find メソッドを使用します。

次の例では、WITH SNIPPET 句を含む単純な SOSL クエリ文字列を実行しています。この例は System.debug() をコールして返されたタイトルとスニペットを出力します。コードによって Web ページにタイトルとスニペットが表示されます。

SOSL インジェクション

SOSL インジェクションとは、ユーザが SOSL ステートメントをあなたのコードに渡すことで、あなたのアプリケーションで意図していなかったデータベースメソッドを実行する手法です。動的 SOSL ステートメントを構築するためにアプリケーションがエンドユーザ入力に依存し、入力が適切に処理されなかった場合、常に SOSL インジェクションが Apex コードで発生する可能性があります。

SOSL インジェクションを防ぐには、escapeSingleQuotes メソッドを使用します。このメソッドは、ユーザから渡される文字列のすべての単一引用符にエスケープ文字 (\) を追加します。このメソッドにより、すべての単一引用符を、データベースコマンドではなく、囲まれた文字列として処理します。