SCORE

SCORE 関数は、検索引数で指定した基準を使用してテキスト検索索引を検索し、文書が照会内容に一致する割合を測定した関連度スコアを返します。

構文図を読む構文図をスキップする
>>-SCORE--(--column-name--,--search-argument--+----------------------------+--)-><
                                              '-,--search-argument-options-'      

構文図を読む構文図をスキップする
search-argument-options

   .-------------------------------.       
   V                               | (1)   
|----+-QUERYLANGUAGE-- = --value-+-+----------------------------|
     +-RESULTLIMIT-- = --value---+         
     |               .-OFF-.     |         
     '-SYNONYM-- = --+-ON--+-----'         

注:
  1. 同じ文節を複数回指定することはできません。
column-name
検索するテキスト検索索引がある列の修飾名または非修飾名を指定します。この列は、ステートメントの FROM 文節で指定されている表またはビューになければならず、表の列、またはビューの基礎となる基本表の列には関連付けられたテキスト検索索引がなければなりません。 ビューの列の基礎となる式は、基礎表の列に対して、直接または他のネストされたビューを介して参照する単純な列参照であることが必要です。
search-argument
検索する用語が含まれる、文字ストリング・データ・タイプまたはグラフィック・ストリング・データ・タイプを戻す式です。空ストリングであったり、すべてを空白にしたりすることはできません。このストリングの実際の長さが Unicode への変換後に 32,740 バイトを超えてはならず、検索引数構文で指定されたテキスト検索限界や用語を超えてもなりません。search-argument 構文については、テキスト検索引数の構文を参照してください。
search-argument-options
検索に使用する検索引数オプションを指定する文字ストリング値またはグラフィック・ストリング値。定数または変数でなければなりません。
search-argument-options の一部として指定できるオプションは、以下のとおりです。
QUERYLANGUAGE = value
言語値を指定します。この値は、サポートされている任意の言語コードにすることできます。QUERYLANGUAGE を指定しないと、この関数の呼び出し時に使用されるテキスト検索索引の言語値がデフォルトとなります。テキスト検索索引の言語値が AUTO の場合、QUERYLANGUAGE のデフォルト値は en_US です。照会言語オプションについては、テキスト検索の言語オプションを参照してください。
RESULTLIMIT = value
基礎となる検索エンジンから戻される結果の最大数を指定します。value は、1 から 2,147,483,647 の整数でなければなりません。RESULTLIMIT を指定しないと、照会での結果に制限がなくなります。

オプティマイザーが選択するプランによって、結果表の各行に対して SCORE が呼び出されることもあれば、呼び出されない場合もあります。基礎となる検索エンジンに対する照会で SCORE がいったん呼び出されると、検索エンジンから、一致する ROWID または主キーすべての結果セットが戻されます。その後、この結果セットはそうした結果行を識別する列が含まれる表に結合されます。 この場合、RESULTLIMIT 値は基礎となるテキスト検索エンジンからの FETCH FIRST n ROWS ONLY のような動作になり、最適化のために使用できます。オプティマイザーが最適なプランであると判断し、SCORE が結果の各行に対して呼び出される場合には、RESULTLIMIT オプションは無効です。

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

search-argument-options が空ストリングまたは NULL 値の場合、この関数は search-argument-options が指定されていない場合のように評価されます。

この関数の結果は、倍精度浮動小数点数になります。 search-argument を NULL にできる場合には、結果が NULL になる可能性があります。search-argument が NULL の場合、結果も NULL 値になります。

SCORE の結果は、0 から 1 までの値です。search-argument で指定した検索基準に一致する項目が対象列に数多く含まれているほど、結果値も大きくなります。一致項目が見つからないと、結果は 0 になります。この列値が NULL の場合、または search-argument に空白しか含まれていないか空ストリングである場合には、結果は 0 です。

SCORE は非決定性関数です。

注意

前提条件: CONTAINS および SCORE 関数を使用するためには、OmniFind® Text Search Server for DB2® for i がインストールされ、開始されている必要があります。

規則: ビュー、ネストされた表の式、または共通表式で、スカラー関数 CONTAINS または SCORE の対象になるテキスト検索列を用意する場合に、その該当するビュー、ネストされた表の式、共通表式の最外部の SELECT ステートメントで DISTINCT 文節を使用するのであれば、SELECT リストに、テキスト検索索引のすべての対応するキー・フィールドを組み込む必要があります。

ビュー、ネストされた表の式、または共通表式で、スカラー関数 CONTAINS または SCORE の対象になるテキスト検索列を用意する場合は、その該当するビュー、ネストされた表の式、または共通表式の最外部の SELECT で、UNION、EXCEPT、INTERSECT を使用できません。

共通表式で、スカラー関数 CONTAINS または SCORE の対象になるテキスト検索列を用意する場合に、その後、その共通表式を照会全体の中で再度参照できるのは、その参照によって、スカラー関数 CONTAINS または SCORE の対象になるテキスト検索列を用意しない場合に限られます。

CONTAINS および SCORE スカラー関数は、照会が以下を指定する場合には使用できません。

  • 分散表
  • 読み取りトリガーを指定する表
  • 複数の物理ファイル・メンバー上に構築された論理ファイル

  • 照会「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

    データベース・マネージャーは、最初に WHERE 文節の CONTAINS 述部を評価するため、表の各行に対して SELECT リストの SCORE 関数が評価されるわけではありません。この場合、SCORE と CONTAINS の引数は同じでなければなりません。