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

FIND {SearchQuery}

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

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

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

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

メモ

検索語

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

検索エンジンは、すべての検索可能なテキストをより小さい要素 (トークン) に分解し、検索インデックスに保存します。検索を実行すると、結果には、検索語のトークンでの一致が含まれます。

スペースまたは句読点で区切られている複数の単語を使用する検索は、別個のトークンに分割されます。たとえば、検索「acme inc」はトークン「acme」と「inc」に分割されます。

形態的トークン化により、中国語、日本語、韓国語、タイ語 (CJKT) などの単語間にスペースのない東アジア言語の検索で、正確な検索結果が得られるようになりました。

日本語で語「東京都」のインデックスを作成し、その後で「京都」を検索した場合の問題について考えてみましょう。形態的トークン化により、「京都」を検索すると、「京都」を含む結果のみが返され、「東京都」を含む結果は返されません。
インデックス 検索
東京都

東京都

京都

京都

バイグラム化も、テキストをトークン化するのによく使用される方法です。バイグラムトークン化では、東京都は、次の 3 つのバイグラムに不適切に分解され、検索インデックスに保存されます。
東京

東京

京都

京都

都知

非単語

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

東京

ワイルドカード

検索内のテキストパターンと一致させるために、次のワイルドカード文字を指定できます。
ワイルドカード 説明
* 検索語の途中または末尾で、0 個以上の文字の代わりにアスタリスクを使用できます。標準ルックアップ検索を実行する場合以外は、検索語の先頭にアスタリスクを使用しないでください。たとえば、「太*」を検索すると、「太一」、「太郎」、「太次郎」などの「」で始まるデータが表示されます。ただし、中国語、日本語、韓国語、またはタイ語で検索する場合は、検索語の中間にアスタリスクまたは疑問符のワイルドカードは使用できません。単語または語句内のリテラルアスタリスクを検索する場合、アスタリスクをエスケープします ( \ 文字をそれの前に付けます)。
? 疑問符は、検索語の途中または末尾 (先頭ではない) にある 1 つのみの文字の代わりに使用できます。たとえば、「jo?n」を検索すると、「john」や「joan」を含むデータが表示されます。ただし、中国語、日本語、韓国語、またはタイ語で検索する場合は、検索語の中間にアスタリスクまたは疑問符のワイルドカードは使用できません。また、検索キーワードの先頭にワイルドカードの疑問符を使用しても機能しません。
ワイルドカードを使用する場合には、以下の点に注意してください。
  • ワイルドカードは先行する文字の種類を表します。たとえば、「aa*a」は「aaaa」と「aabcda」に一致しますが、「aa2a」や「aa.!//a」には一致せず、「p?n」は「pin」と「pan」には一致しますが、「p1n」や「p!n」には一致しません。同様に、「1?3」は「123」と「143」には一致しますが、「1a3」や「1b3」には一致しません。
  • ワイルドカード (*) は、中国語、日本語、韓国語、タイ語 (CJKT) での検索で、完全に一致する語句の検索を除いて、1 つの文字の最後に追加されます。
  • ワイルドカード検索の条件を絞り込むほど、検索結果はより速く返され、期待する結果が返される可能性が高まります。たとえば、単語 prospect (または複数形 prospects) のすべての発生を検索するには、無関係の一致 ( prosperity など) を返す可能性のある制限のより少ないワイルドカード検索 (prosp* など) を指定するよりも、検索文字列内で prospect* を指定する方がより効率的です。
  • 単語のすべてのバリエーションを見つけるために、検索を調整します。たとえば、propertyproperties を見つけるには、propert* を指定します。
  • 句読点にはインデックスを付けます。語句内で * または ? を見つけるためには、検索文字列を引用符で囲む必要があり、特殊文字をエスケープする必要があります。たとえば、"where are you\?" は、語句 where are you? を見つけます。エスケープ文字 (\) は、この検索が正しく機能するために必要です。

演算子

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

演算子 説明
" " 完全に一致する語句を検索するには、検索語を引用符で囲みます。これは、句読点を含むテキストの検索で特に役立ちます。たとえば、"acme.com" は完全に一致するテキスト acme.com を含む項目を検索します。"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
次の例は、検索文字列がどう計算されるかを示します。
検索文字列 同等の検索 検出されるデータに含まれる単語
東京都 AND 中央区 AND NOT ミーティング 東京都 AND (中央区 AND NOT ミーティング) 東京都中央区 はあるが、ミーティングはない
東京都 AND NOT 中央区 AND ミーティング 東京都 AND NOT (中央区 AND ミーティング) 東京都はあるが、中央区ミーティングは両方ともない
東京都 AND 中央区 OR ミーティング (東京都 AND 中央区) OR ミーティング 東京都中央区があるデータと、ミーティングがあるデータ
東京都 AND (中央区 OR ミーティング) 東京都 AND (中央区 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 句

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

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