SOSL の制限
SOSL では、特定の制限が検索結果のオブジェクトまたは状況に適用されます。その結果、ユーザが探しているレコードが検索されるレコードの最大数の枠内に含まれないことがあるため、ユーザがいつも有効な一致結果すべてを取得できるとは限りません。次の概要と説明図は、検索エンジンが SOSL 検索をどのように処理するかを示します。
組織の Salesforce データは、最も関連性の高い結果がユーザに返されるように、インデックスが作成され、取得されます。
ただし、ユーザが探しているレコードが検索されるレコードの最大数に含まれない場合、ユーザはアクセス可能なすべての一致結果を見つけることができません。
検索エンジンは、次の順序で SOSL 検索を処理します (リストの番号が下記画像の番号に対応します)。
- 検索エンジンは、最大数のレコード内で検索語との一致を探します。
- 次に、SOSL は特定の制限をオブジェクトまたは状況に適用します。
通常、SOSL の制限は SOQL の制限と同じです。API バージョン 28.0 以降では、返される結果の全体の制限が 2,000 件になりました。以前のバージョンでは最大 200 件の結果が返されます。
この結果セットは、検索を実行するユーザに応じて、また時間の経過と共に変化する可能性があります。- ユーザが最近アクセスしたレコードは、検索結果に含まれる可能性が高くなります。
- インデックスは、ユーザがレコードの削除や作成を行うと 1 日の間に変化する可能性があります。
- 管理者 (「すべてのデータの参照」権限を持つユーザ) には、RETURNING 句の指定に従って、返された結果セットのすべてが表示されます。
- 個々のユーザには、参照権限を持つレコードのみが表示されます。

例
たとえば、上記画像の各雨滴がレコード、各色がオブジェクト、じょうごの外に落ちる 1 つの青い雨滴が取引先レコード「Acme, Inc.」を表すとします。この例では、返される一致レコードの最大数は 21 です (じょうご内に落ちる雨滴の数で表される)。ユーザが「Acme, Inc.」を検索すると、検索エンジンは、一致レコード全体の制限である 21 に達するまで一致を検索しますが、その中には最初の 5 件の取引先レコードしか含まれません。「Acme, Inc.」は検索対象のレコードのセットに含まれないため、検索を行うユーザにそのレコードへのアクセス権があっても、検索結果に含まれません。
外部オブジェクトに関する SOSL の制限
- 検索できるのは、外部オブジェクトのテキスト、テキストエリア、およびロングテキストエリア項目のみです。外部オブジェクトに検索可能項目がない場合、そのオブジェクトに対する検索ではレコードは返されません。
- 外部オブジェクトでは、以下をサポートしていません。
- INCLUDES 演算子
- LIKE 演算子
- EXCLUDES 演算子
- toLabel() 関数
- 外部オブジェクトは、次のような Salesforce ナレッジ固有の句もサポートしていません。
- UPDATE TRACKING 句
- UPDATE VIEWSTAT 句
- WITH DATA CATEGORY 句
- 検索結果に返すには、外部オブジェクトを RETURNING 句で明示的に指定する必要があります。次に例を示します。
1FIND {MyProspect} RETURNING MyExternalObject, MyOtherExternalObject
次の制限は、Lightning Connect の OData 2.0 および 4.0 アダプタにのみ適用されます。
- Lightning Connect の OData 2.0 アダプタでは、FIND 句で論理演算子をサポートしていません。外部システムでは、検索クエリ文字列全体が大文字と小文字が区別される 1 つの句として受信され、英数字文字以外はすべて削除されます。たとえば、FIND {MyProspect OR “John Smith”} の場合、「MyProspect OR John Smith」と完全一致する語句が検索されます。
-
また、デフォルトでは、検索クエリ文字列は $filter システムクエリオプションの substringof 値として使用されます。次の例では、検索クエリ文字列は Acme です。
1http://services.example.org/my.svc/Shippers? 2$select=CompanyName,Phone,ShipperID&$inlinecount=allpages& 3$filter=substringof('Acme',CompanyName)+eq+true+ 4or+substringof('Acme',Phone)+eq+true&$top=26OData プロデューサのフリーテキスト検索カスタムクエリオプションを実装することをお勧めします。外部データソースの [Salesforce 検索のカスタムクエリオプション] 項目でそのクエリ文字列パラメータの名前を指定します。次の例では、カスタムクエリパラメータの名前は doSearch で、検索クエリ文字列は Acme です。1http://services.example.org/my.svc/Shippers? 2$select=CompanyName,Phone,ShipperID& 3$inlinecount=allpages&doSearch=Acme&$top=26
次の制限は、Lightning Connect のカスタムアダプタにのみ適用されます。
- 外部オブジェクトの SOSL クエリでは、convertCurrency() 関数はサポートされていません。
- 外部オブジェクトの SOSL クエリでは、WITH 句はサポートされていません。