全文検索を使用する¶
検索関数を使用すると、 VARIANT、 OBJECT、 ARRAY 列のフィールドを含め、1つまたは複数のテーブルから、指定した列の文字データ(テキスト)と IPv4 アドレスを検索できます。この関数は、指定された検索語のリストに基づいて、指定された列または文字列のテキストを検索します。この関数は、テキストが検索セマンティクスに基づいて指定された検索語にマッチする場合、 TRUE を返します。
多くの場合、 SEARCH 関数を呼び出すには、 SELECT リストか、 SELECT ステートメントの WHERE 句で指定します。関数が WHERE 句フィルターとして使用されている場合、関数が TRUE を返すと、クエリは行を返します。
SEARCH 関数にはセットアップも追加権限も必要ありません。列のデータにアクセスする権限を持つロールを使用している場合、 SEARCH 関数を使用してそのデータを検索することができます。
次のセクションでは、 SEARCH 関数についての詳細と、この関数を使用した場合のクエリパフォーマンスの最適化について説明します。
SEARCH 関数の使用¶
SEARCH 関数 は、 VARIANT、 OBJECT、 ARRAY の列のフィールドを含む、1つ以上のテーブルから指定された列の文字データ(テキスト)を検索します。
SEARCH 関数を使用すると、テキストアナライザーはテキストを トークン に分割します。トークンとは、単語や数値など、テキストの個別の単位です。指定がない場合は、デフォルトのアナライザーが適用されます。アナライザーは、検索語とデータの両方からトークンを抽出します。
検索語から抽出されたトークンが、検索セマンティクスに従って指定された列またはフィールドから抽出されたトークンと一致する場合、関数は TRUE を返します。SEARCH_MODE 関数の引数には、検索セマンティクスとして 'OR'
(接続法) または 'AND'
(接続法) を指定します。
'OR'
(デフォルト) を指定すると、検索対象の列またはフィールドから抽出されたトークンの いずれか が、検索文字列から抽出されたトークンの いずれか と一致する場合に一致します。例えば、search_string
の値が'blue red green'
の場合、関数は検索対象の列またはフィールドのいずれかにblue
ORred
ORgreen
を含む行に対して TRUE を返します。'AND'
が指定された場合、検索される列またはフィールドのから抽出されたトークンの 少なくとも 1 つ が、検索文字列から抽出されたトークンの すべて と一致すれば一致となります。一致するトークンはすべて1つの列またはフィールドになければなりません。複数の列やフィールドにまたがることはできません。例えば、search_string
の値が'blue red green'
の 場合、関数は検索対象の列またはフィールドの少なくとも 1 つにblue
ANDred
ANDgreen
を含む行に対して TRUE を返します。
以下の例では、デフォルトの SEARCH_MODE ('OR'
) とデフォルトのアナライザーで、 leopard
テキスト内の文字列 snow leopard
を検索しています:
SELECT SEARCH('leopard', 'snow leopard');
+-----------------------------------+
| SEARCH('LEOPARD', 'SNOW LEOPARD') |
|-----------------------------------|
| True |
+-----------------------------------+
次の例は、 lion
というテキストから、 snow leopard
という文字列を検索します。
SELECT SEARCH('lion', 'snow leopard');
+--------------------------------+
| SEARCH('LION', 'SNOW LEOPARD') |
|--------------------------------|
| False |
+--------------------------------+
次の例は、文字列 leopard
の中から snow leopard
を検索し、引数 SEARCH_MODE に 'AND'
を指定します。
SELECT SEARCH('leopard', 'snow leopard', search_mode => 'AND');
+---------------------------------------------------------+
| SEARCH('LEOPARD', 'SNOW LEOPARD', SEARCH_MODE => 'AND') |
|---------------------------------------------------------|
| False |
+---------------------------------------------------------+
この関数の詳細とその他の例については、 SEARCH を参照してください。
SEARCH_IP 関数の使用¶
SEARCH_IP 関数 は、 VARIANT、 OBJECT、 ARRAY 列のフィールドを含む、1つ以上のテーブルから、指定された文字列の列の有効な IPv4 アドレスを検索します。検索は、指定した単一の IP アドレスに基づいて行われます。この IP アドレスが、指定された列またはフィールドの IP アドレスと完全に一致する場合、関数は TRUE を返します。
次の例は、 192.0.2.146
のテキストから、 IP アドレス 10.10.10.1
を検索します。
SELECT SEARCH_IP('192.0.2.146','10.10.10.1');
+---------------------------------------+
| SEARCH_IP('192.0.2.146','10.10.10.1') |
|---------------------------------------|
| False |
+---------------------------------------+
この関数の詳細とその他の例については、 SEARCH_IP を参照してください。
SEARCH 関数を使用するクエリの最適化¶
この関数を使用するクエリのパフォーマンスを向上させるために、オプションで FULL_TEXT 検索最適化 をテーブル内の特定の列または列のセットに対して有効にすることができます。検索最適化を有効にすると、新しい 検索アクセスパス が構築され、維持されます。