SOSL の制限
検索エンジンでは、検索プロセスの各フェーズで分析されるレコード数が制限されています。その結果、ユーザが探しているレコードが検索結果数制限の枠内に含まれないことがあるため、ユーザがいつも有効な一致結果すべてを取得できるとは限りません。
次の画像は、検索エンジンが SOSL 検索を処理する順序を示しています。この図の各色はオブジェクトを表し、各雨滴はレコードを表します。数字は次のフローに対応しています。
- 検索エンジンは、最大 2,000 件のレコード内で検索語との一致を探します (この制限は API バージョン 28.0 以降に適用されます)。
- SOSL は、特定のオブジェクトまたは状況に異なる制限を適用します。単一オブジェクトを検索する場合、完全なレコード制限が適用されます。複数のオブジェクトでのグローバル検索の場合、各オブジェクトには合計 2,000 レコードの制限が個別に適用されます。
- システム管理者 (「すべてのデータの参照」権限を持つユーザ) には、返された結果セットのすべてが表示されます。
- その他すべてのユーザには、SOSL によってユーザ権限検索条件が適用されます。個々のユーザには、参照権限を持つレコードのみが表示されます。結果セットと順序は検索を実行するユーザによって異なり、インデックスからのレコードの追加または削除に応じて 1 日の間に変化する可能性があります。

例
Acme, Inc. の営業担当役員である Joe Smith が、「Industrial Computing」の取引先レコードを検索します。検索バーに「Industrial」と入力します。「Industrial」という検索語に一致するレコードは多数あるため、結果に制限が適用されます。残念ながら、Joe が探しているレコードは制限の枠内にはありませんでした。この概念は、画像ではじょうごの外側にある 1 つの雨滴で示されています。
Joe はグローバル検索を使用したため、各オブジェクト種別に 2,000 件のレコード制限が適用されます。この図では、5 つの青い雨滴がじょうごに入っていますが、そのうち 3 つのみが次のフェーズに進んでいます。検索を 1 つのオブジェクトのみに絞り込んでいれば、制限はそのオブジェクトにのみ適用され、探しているレコードが返される確率は高くなります。
Joe は「Industrial Computing San Francisco」と入力して検索を再試行します。検索語がより具体的になったため、同じ制限が適用される場合でも検索エンジンはより適切な一致を返すことができます。このシナリオでは、Joe が探しているレコードは、じょうごの最上部から Joe の検索結果ページまで通過している青い雨滴のうちの 1 つです。
検索の結果過剰と切り捨てを回避するには、次のベストプラクティスに従ってください。
- より具体的な検索語を使用するようにユーザに促す
- 検索は、ユーザが一意の検索語を入力したときに最適に機能します。「Acme Company San Francisco」は、「Acme」よりも関連性の高い結果が返されます。
- 検索範囲を絞り込むようにユーザに促す
- ユーザが検索結果ページを表示しているときに、検索範囲を目的のレコードのオブジェクト種別に制限すると、検索が再実行されます。単一オブジェクトに対して完全な結果セットの制限が適用されるため、より多くの結果が表示される可能性があります。
- リストビューを作成する
- 繰り返し検索する取引先責任者、ドキュメント、その他のオブジェクトレコードの特定のセットを表示するリストビューを作成します。リストビューにはレコード数の制限はなく、結果セットの順序付けがあります。共有ルールも適用されます。
外部オブジェクトに関する SOSL の制限
- SOSL および Salesforce 検索に外部オブジェクトを含めるには、外部オブジェクトと外部データソースの両方で検索を有効にします。ただし、同期すると外部オブジェクトの検索状況が常に上書きされて、外部データソースの検索状況と一致します。
- 検索できるのは、外部オブジェクトのテキスト、テキストエリア、およびロングテキストエリア項目のみです。外部オブジェクトに検索可能項目がない場合、そのオブジェクトに対する検索ではレコードは返されません。
- 外部オブジェクトでは、以下をサポートしていません。
- INCLUDES 演算子
- LIKE 演算子
- EXCLUDES 演算子
- toLabel() 関数
- 外部オブジェクトは、次のような Salesforce ナレッジ固有の句もサポートしていません。
- UPDATE TRACKING 句
- UPDATE VIEWSTAT 句
- WITH DATA CATEGORY 句
- 検索結果に返すには、外部オブジェクトを RETURNING 句で明示的に指定する必要があります。次に例を示します。
1FIND {MyProspect} RETURNING MyExternalObject, MyOtherExternalObject
次の制限は、Salesforce Connect の OData 2.0 および 4.0 アダプタにのみ適用されます。
- Salesforce Connect の OData アダプタでは、FIND 句で論理演算子をサポートしていません。外部システムには、検索クエリ文字列全体が、ハイフン (-) を除く ASCII の句読文字をすべて削除した後に大文字と小文字が区別される 1 つの句として送信されます。たとえば、FIND {MyProspect OR “John Smith”} の場合、「MyProspect OR John Smith」と完全一致する語句が検索されます。
次の制限は、Salesforce Connect のカスタムアダプタにのみ適用されます。
- 外部オブジェクトの SOSL クエリでは、convertCurrency() 関数はサポートされていません。
- 外部オブジェクトの SOSL クエリでは、WITH 句はサポートされていません。