検索引数の構文

テキスト文書に含まれている語を検索するための条件として検索引数を指定できます。検索引数には検索パラメーターと 1 つ以上の検索語を組み込みます。検索引数を使用する SQL スカラー・テキスト検索関数は、CONTAINS と SCORE です。

検索時の言語固有の処理については、検索引数のオプションとして QUERYLANGUAGE パラメーターの値を指定できます。 サポートされているいずれかの言語コードを値として指定できます。

QUERYLANGUAGE パラメーターを指定しない場合のデフォルト値は、この関数を呼び出すときに使用するテキスト検索索引の言語値になります。

テキスト検索索引の言語の値が AUTO である場合、QUERYLANGUAGE のデフォルト値は en_US です。

制限

CONTAINS 関数と SCORE 関数を SQL 制約や索引定義で使用することはできません。SQL 照会ステートメントやビュー定義ではそれらの関数を使用できますが、以下の制約があります。
  • ビュー、ネストされた表の式、共通表式で、スカラー関数 CONTAINS または SCORE の対象になるテキスト検索列を用意する場合に、その該当するビュー、ネストされた表の式、共通表式の最外部の SELECT ステートメントで DISTINCT 文節を使用するのであれば、SELECT リストに、テキスト検索索引のすべての対応するキー・フィールドを組み込む必要があります。その条件を満たさない場合は、SQL メッセージ 38H12 が返されます。
  • ビュー、ネストされた表の式、共通表式で、スカラー関数 CONTAINS または SCORE の対象になるテキスト検索列を用意する場合は、その該当するビュー、ネストされた表の式、共通表式の最外部の SELECT レベルで、UNION、EXCEPT、INTERSECT の各ステートメントを使用できません。その条件を満たさない場合は、SQL メッセージ 38H12 が返されます。
  • 共通表式で、スカラー関数 CONTAINS または SCORE の対象になるテキスト検索列を用意する場合に、その共通表式を照会全体の中で再度参照できるのは、その参照によって、スカラー関数 CONTAINS または SCORE の対象になるテキスト検索列を用意しない場合に限られます。 その条件を満たさない場合は、SQL メッセージ 38H12 が返されます。
  • スカラー関数 CONTAINS または SCORE をソースにした関数は作成できません。その条件を満たさない場合は、SQL メッセージ SQL0457 が返されます。
  • 照会を実行するには、SQL Query Engine (SQE) を使用します。

単純な検索

単純なキーワード検索を実行する場合は、照会で 1 つ以上のキーワードを入力します。検索エンジンからは、そのすべてのキーワードまたはキーワードのバリエーションが含まれている文書が返されます。

例えば、「king」を入力すると、検索エンジンからは、「king」または「kings」という語が含まれているすべての文書が返されます。 「king lear」という照会を入力すると、検索エンジンからは、「king」と「lear」の両方の語が含まれている文書が返されます。

検索結果を絞り込むには、より具体的なキーワードを使用します。例えば、「coffee」ではなく「French roast coffee」を使用するとか、「Hawaiian vacations」ではなく「Kauai hiking tours」を使用する、といった具合です。

単純なキーワード検索によって対象外の文書があまりにも多く返される場合は、演算子を使用して検索を洗練できます。

検索語の除外

語を除外するには、負符号 (-) を使用します。例えば、「lear」という語が含まれていて、「edward」が含まれていない文書を検索する場合は、「lear -edward」という照会を入力します。

負符号 (-) の適用対象は、語とその変化形です。例えば、「-edward」という照会を使用すると、「edward's」という語が含まれている文書も除外されます。

フレーズ検索

複数の検索語が入力の順序のとおりに並んでいるフレーズを検索対象にする場合は、二重引用符を使用します。例えば、「king lear」というフレーズの完全一致だけを検索し、「kingly lear」や「king and queen lear」などの関連フレーズを除外する場合は、「"king lear"」と入力します。 この検索では大/小文字の区別はありませんが、語の変化形は一致項目と見なされません。

検索で使用するワイルドカード文字

完全なスペルがわからない検索語や検索語のバリエーションが含まれている文書を探す場合は、ワイルドカード文字 (*) を使用できます。例えば、「czech*」という照会を使用すると、「czech」、「czechoslovakia」、「czechoslovakian」、「czech republic」などの語句が含まれている文書が返されます。

フレーズ検索でワイルドカード文字を使用することもできます。例えば、「"John * Kennedy"」という照会を使用すると、「John Fitzgerald Kennedy」や「John F Kennedy」というフレーズが含まれている文書が返されますが、「John Kennedy」が含まれている文書は返されません。「Mi*l Gorbachev」という照会からは、「Mikhail Gorbachev」が返されます。

*zech」のように照会の先頭にワイルドカード文字を追加すると、検索エンジンから結果が返されるまでの時間が長くなる可能性があります。

複数の語のうちのいずれか 1 つを対象にした検索

論理演算子 OR を指定すると、照会で使用する語のいずれか 1 つが含まれている文書が返されます。例えば、「(othello OR otello)」という照会を使用すると、「othello」または「otello」のいずれかの語が含まれている文書が返されます。

括弧を使用して、論理演算子の AND、OR、NOT を組み合わせて指定することもできます。例えば、「cougar OR (jaguar AND NOT car)」という照会を使用すると、「cougar」が含まれているという条件、または「car」が含まれていなくて「jaguar」が含まれているという条件のいずれかを満たす文書が返されます。

論理演算子の AND、OR、NOT はすべて大文字で入力しなければなりません。グループを指定する場合は、括弧を使用します。