SCORE スカラー関数

SCORE 関数は、検索引数で指定された検索条件を使用してテキスト検索索引を検索し、その照会における文書の一致の度合いを測る関連性スコアを戻します。

要件 :SCORE機能を使用するには、 Db2 for z/OS® 用のテキスト検索がインストールおよび設定されている必要があります。 IBM テキスト検索 Db2 for z/OS 詳細はこちらをご覧ください。
構文図を読むビジュアルシンタックスダイアグラムをスキップするSCORE(カラム名,search-argument,ひもていすう1)
注:
  • 1 つの文字列定数は検索引数オプションのルールに従う必要があります。
検索引数オプション
構文図を読むビジュアルシンタックスダイアグラムをスキップする1QUERYLANGUAGE=RESULTLIMIT=SYNONYM=オフON
注:
  • 1 同一の条項は、複数回指定してはならない。

スキーマは SYSIBM です。

列名
検索するテキスト検索索引を含む列の修飾名または非修飾名を指定します。 この列はステートメントの FROM 文節で示された表またはビュー内に存在し、その表の列、またはそのビューの基礎となる基本表の列は、関連のテキスト検索索引を持っていなければなりません。 ビューの基礎となる列の式は、基礎表の列に対する直接的な、または別のネストされたビューを介しての、単純な列参照でなければなりません。
検索引数
検索対象の用語を含んでいるストリング値 (LOB を除く) を戻す式を指定し、すべてがブランクまたは空ストリングであってはなりません。 ストリングの実際の長さは 4096 Unicode 文字を超えてはなりません。 値は Unicode に変換されてから、テキスト検索索引の検索に使用されます。 照会当たりの用語の最大数は 1024 を超えてはなりません。
ひもていすう
関数に対して有効な検索引数オプションを指定するストリング定数を指定します。

search-argument-options の一部として指定できるオプションは、次のとおりです。

クエリ言語 =
照会言語を指定します。 値は、サポートされる任意の言語コードを指定できます。 QUERYLANGUAGE オプションを指定しない場合のデフォルト値は、この関数を呼び出すときに使用するテキスト検索索引の言語値になります。 テキスト検索索引の LANGUAGE の値が AUTO の場合、QUERYLANGUAGE のデフォルト値は en_US です。
RESULTLIMIT =
基礎の検索エンジンから戻される結果の最大数を指定します。 値は、1~2 147 483 647 の範囲の整数です。 RESULTLIMIT オプションを指定しないと、結果に関する制限は照会に対して無効です。

オプティマイザーが選択するプランによっては、このスカラー関数を結果表の各行ごとに呼び出すことができません。 この関数は照会につき一度だけ基礎の検索エンジンに対して呼び出すことができ、一致するすべての主キーを含む結果セットが検索エンジンから戻されます。 この結果セットが該当の列を含む表に結合されて、結果行を識別します。 この場合、RESULTLIMIT 値は、基礎となるテキスト検索エンジンからの FETCH FIRST ?? ROWS のように機能し、最適化として使用することができます。 オプティマイザーがそれが最良のプランと判断したために、検索エンジンが結果の各行ごとに呼び出される場合には、RESULTLIMIT オプションは無効です。

SYNONYM = OFF または SYNONYM = ON
テキスト検索索引に関連付けられた同義語ディクショナリーを使用するかどうかを指定します。 シノニム・ツールを使用して、シノニム・ディクショナリーをコレクションに追加します。 デフォルトは OFF です。
オフ
同義語ディクショナリーを使用しません。
ON
テキスト検索索引に関連したシノニム・ディクショナリーを使用します。

関数の結果は倍精度浮動小数点数になります。 2 番目の引数が NULL になりえる場合は、結果は NULL になりえます。 2 番目の引数が NULL の場合、結果は NULL 値となります。 3 番目の引数が NULL の場合、結果は 3 番目の引数を指定しなかった場合と同じになります。

その列に検索引数で指定する検索基準に一致するものが含まれている場合、結果は 0 より大きく 1 より小さい値です。 文書が照会と一致していればいるほどスコアの関連性は高くなり、結果の値は大きくなります。 列に一致するものが含まれない場合、結果は 0 になります。

決定論:
SCORE は一律の結果を生じない関数です。

EMP_RESUME という名前の表に、従業員のスキルに関する情報が保管されているとします。 次のステートメントは、従業員について、その履歴書が照会「programmer AND (java OR cobol)」に一致する度合いが高い順にリストし、0 (ゼロ) から 100 までの間に正規化された関連性の値とともに表示します。
SELECT EMPNO, INTEGER(SCORE(RESUME, 'programmer AND 
	(java OR cobol)') * 100) AS RELEVANCE 
	FROM EMP_RESUME 
	WHERE RESUME_FORMAT = 'ascii' 
	AND CONTAINS(RESUME, 'programmer AND (java OR cobol)') = 1 
	ORDER BY RELEVANCE DESC
Db2 はまず、WHERE 節内の CONTAINS 述部を評価します。したがって、表の各行について、SELECT リスト内の SCORE 関数は評価しません。 この場合、SCORE と CONTAINS の引数は同一でなければなりません。