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

FIND {SearchQuery}

検索する単語または語句を指定するには、SOSL クエリで FIND 句 (必須) を使用します。検索クエリには、リテラルの単語または語句が含まれます。また、ワイルドカードと論理演算子 (AND、OR、AND NOT) も含めることができます。
検索クエリには次が含まれます。
  • 検索するリテラルテキスト (単語または語句)
  • ワイルドカード (省略可能)
  • グルーピングの括弧を含む論理演算子 (省略可能)

検索は左から右に評価され、Unicode (UTF-8) 文字コードを使用します。テキスト検索は大文字と小文字を区別しません。たとえば、Customer、customer、CUSTOMER の検索はすべて同じ結果を返します。

実行時に評価される特殊な種類のテキスト式 (マクロ、関数、正規表現など) は、FIND 句に含めることはできません。

テキスト検索で検索式を他の句と明確に区別するには、SearchQuery を中括弧で囲みます。

メモ

検索語

SearchQuery には、次を���めることができます。
  • 単語: testhello など
  • 語句: 二重引用符で囲まれた単語と空白 ("john smith" など)

検索エンジンによって、スペースまたは句読点で区切られたレコード情報が別個のトークンに分割されます。検索エンジンは形態的トークン化を使用して、単語間にスペースを含まない東アジア言語の検索で正確な検索結果を返します。

日本語で語「東京都」のインデックスを作成し、その後で「京都」を検索した場合の問題について考えてみましょう。
インデックス 検索
東京都

東京都

京都

京都

形態的トークン化は、語「東京都」を 2 つのトークンに分割します。
東京

東京

このトークン化形式により、「京都」を検索すると、「京都」を含む結果のみが返され、「東京都」を含む結果は返されません。

ワイルドカード

検索内のテキストパターンと一致させるために、次のワイルドカード文字を指定できます。
ワイルドカード 説明
*

検索語の途中または末尾で、0 個以上の文字の代わりにアスタリスクを使用できます。たとえば、「太*」を検索すると、「太一」、「太郎」、「太次郎」などの「」で始まるデータが表示されます。ただし、中国語、日本語、韓国語、またはタイ語で検索する場合は、検索語の中間にアスタリスクまたは疑問符のワイルドカードは使用できません。

単語または語句内のリテラルアスタリスクを検索する場合、アスタリスクをエスケープします (\ 文字をそれの前に付けます)。

? 疑問符は、検索語の途中または末尾にある 1 つのみの文字の代わりに使用できます。たとえば、「jo?n」を検索すると、「john」や「joan」を含むデータが表示されます。ただし、中国語、日本語、韓国語、またはタイ語で検索する場合は、検索語の中間にアスタリスクまたは疑問符のワイルドカードは使用できません。また、検索キーワードの先頭にワイルドカードの疑問符を使用しても機能しません。ルックアップ検索では ? は使用できません。
ワイルドカードを使用する場合には、以下の点に注意してください。
  • ワイルドカード検索の条件を絞り込むほど、検索結果はより速く返され、期待する結果が返される可能性が高まります。たとえば、単語 prospect (または複数形 prospects) のすべての発生を検索するには、無関係の一致 (prosperity など) を返す可能性のある制限のより少ないワイルドカード検索 (prosp* など) を指定するよりも、検索文字列内で prospect* を指定する方がより効率的です。
  • 単語のすべてのバリエーションを見つけるために、検索を調整します。たとえば、propertyproperties を見つけるには、propert* を指定します。
  • 句読点にはインデックスを付けます。語句内で * または ? を見つけるためには、検索文字列を引用符で囲む必要があり、特殊文字をエスケープする必要があります。たとえば、"where are you\?" は、語句 where are you? を見つけます。エスケープ文字 (\) は、この検索が正しく機能するために必要です。

演算子

複数の単語を論理演算子およびグルーピング演算子と組み合わせて、より複雑なクエリを作成できます。次の特殊演算子を使用して、テキスト検索を絞り込めます。演算子のサポートでは大文字と小文字を区別しません。

演算子 説明
" " 入力した検索語の順序で一致を見つけるには、検索語を引用符で囲みます。"monday meeting" では、monday meeting をこの順番で含む項目が検索されます。

検索結果に語「and」、「or」、「and not」を含めるには、これらの語を二重引用符で囲みます。囲まないと、それぞれ対応する演算子として解釈されます。

AND すべての検索語に一致する項目を検索します。たとえば、john AND smithjohnsmith の両方の単語を含む項目を検索します。通常、演算子が指定されていない場合は AND がデフォルトの演算子です。記事、ドキュメント、およびソリューションを検索する場合は OR がデフォルトの演算子であるため AND は明示的に指定する必要があります。
OR 検索キーワードを最低 1 つ含むデータを検索します。たとえば、john OR smithjohnsmith、またはその両方を含む項目を検索します。
AND NOT 検索語を含まない項目を検索します。たとえば、john AND NOT smith は単語 john を含み、単語 smith を含まない項目を検索します。
() 括弧で囲んだ検索語と論理演算子を使用して、検索語をグループ化します。たとえば、次の検索を実行できます。
  • ("Bob" and "Jones") OR ("Sally" and "Smith") — Bob Jones または Sally Smith を検索します。
  • ("Bob") and ("Jones" OR "Thomas") and Sally Smith — Bob Jones と Sally Smith、または Bob Thomas と Sally Smith を含むドキュメントを検索します。

SearchQuery の文字制限

SearchQuery 文字列が 10,000 字を超えると、結果行は返されません。SearchQuery が 4,000 文字を超えると、論理演算子はすべて削除されます。たとえば、4,001 文字の SearchQuery を含むステートメント内の AND 演算子は、デフォルトの OR 演算子になるため、予想よりも多くの結果が返される場合があります。

複数の演算子を組み合わせて 1 つの検索文字列として指定した場合は、次の順序で計算されます。

  1. 括弧
  2. AND および AND NOT (右から左に計算されます)
  3. OR

予約文字

次の文字が予約されています。
1? & | ! { } [ ] ( ) ^ ~ * : \ " ' + -

テキスト検索で予約文字を指定する場合、予約文字をエスケープして (前にバックスラッシュ \ 文字を付けて) 予約文字が適切に解釈されるようにする必要があります。予約文字の前にバックスラッシュを付けないと、エラーが発生します。これは SearchQuery を二重引用符で囲んだ場合にも該当します。

たとえば、次のテキストを検索するとします。

1{1+1}:2

各予約文字の前にバックスラッシュを挿入します。

1\{1\+1\}\:2

FIND 句の例

検索タイプ
単語の例 FIND {MyProspect}

FIND {mylogin@mycompany.com}

FIND {FIND}

FIND {IN}

FIND {RETURNING}

FIND {LIMIT}

単一語句 FIND {John Smith}
単語 OR 単語 FIND {MyProspect OR MyCompany}
単語 AND 単語 FIND {MyProspect AND MyCompany}
単語 AND 語句 FIND {MyProspect AND "John Smith"}
単語 OR 語句 FIND {MyProspect OR "John Smith"}
AND/OR を使用した複雑なクエリ FIND {MyProspect AND "John Smith" OR MyCompany}

FIND {MyProspect AND ("John Smith" OR MyCompany)}

AND NOT を使用した複雑なクエリ FIND {MyProspect AND NOT MyCompany}
ワイルドカード検索 FIND {My*}
エスケープシーケンス FIND {Why not\?}
無効または不完全な語句 (成功しません) FIND {"John Smith}

Apex の FIND 句

Apex の FIND 句の構文は、SOAP API および REST API の FIND 句の構文と異なります。
  • Apex の場合、FIND 句の値は単一引用符で区画されます。次に例を示します。
    1FIND 'map*' IN ALL FIELDS RETURNING Account (Id, Name), Contact, Opportunity, Lead

    システムモードで実行される Apex では、IN ALL FIELDS を使用して一致をスキャンする際に、項目レベルセキュリティが無視されます。

    メモ

  • API の場合、FIND 句の値は中括弧で区画されます。次に例を示します。
    1FIND {map*} IN ALL FIELDS RETURNING Account (Id, Name), Contact, Opportunity, Lead

Apex での SOSL と SOQL の使用についての詳細は、『Lightning Platform Apex コード開発者ガイド』を参照してください。