4.2.3 score
(1) 機能
スコア値(contains_with_score関数の結果として得られるスコア値)を返却します。
(2) 書式
score(列指定)
(3) 入力
列指定
(4) 戻り値
スコア値(INTEGER)
(5) 詳細
-
contains_with_score関数と一緒に使用します。
-
列指定はcontains_with_score関数で検索する対象と同じ列名を指定します。score関数を使用するSELECTでは,必ずWHERE探索条件にscore関数と同じ列名を指定したcontains_with_score関数を使用します。検索結果をスコア順にソートして,スコアの得点の高いものから取り出す場合には,ORDER BYを使用してください。
-
score関数は受け渡し値受信関数であり,contains_with_score関数から値を受け取ります。受け渡し値受信関数の実行方法に関する規則については,マニュアル「HiRDB UAP開発ガイド」を参照してください。
(6) スコア値
1文書のスコア値は,「検索タームの文書内での出現数 × 検索タームの重み × 構造の重み」で算出されます。ただし,検索条件式に論理検索や近傍検索を使用している場合は,次のようになります。
-
論理検索の場合
論理積(AND)のときは,各スコアの最小値を取ります。
論理和(OR)のときは,各スコアの最大値を取ります。
論理否定(NOT)のときは,各スコア値はナル値となります。
-
近傍検索の場合
近傍検索のスコアは,ヒットした検索ターム間の距離で算出します。
検索ターム間の距離が近いほどスコアが高くなります。
表4‒3 スコアの算出方法 検索条件
スコアの算出方法
算出例
論理積
(AND条件)※1
論理演算の対象を比較して,値の少ない方をスコアとする
「AおよびBが含まれる文書」を検索した結果,文書内での出現数がA>Bだった場合,Bの出現数を基にスコアが付けられる※2
論理和
(OR条件)※1
論理演算の対象を比較して,値の多い方をスコアとする
「AまたはBが含まれる文書」を検索した結果,文書内での出現数がA>Bだった場合,Aの出現数を基にスコアが付けられる※2
近傍条件
=
指定した距離とヒットした距離が等しい場合は100が与えられる
「AB間の距離が10文字ちょうどの文書」を検索した結果,文書内でのAとBの距離が10であれば100が与えられる
<=
ヒットした距離が0に近いほど100に近づく。指定した距離と同じ場合は1が与えられる
「AB間の距離が10文字以下の文書」を検索した結果,文書内でのAとBの距離が0ならば100が与えられる。10以下の値は,10に近いほど低い値が与えられる
>=
指定した距離とヒットした距離が等しい場合は100が与えられる。遠ざかるほど低くなる
「AB間の距離が10文字以上の文書」を検索した結果,文書内でのAとBの距離が10ならば100が与えられる。10を超える値は,10から遠くなるほど低いスコアが与えられる
- 注※1
-
検索ターム同士および検索条件式同士の論理演算が含まれます。
- 注※2
-
ここでの算出方法は,検索条件式の構造に重みが付けられていないことが前提です。構造に重みが付けられている場合は,「距離から算出したスコア×構造の重み」で算出されます。なお,近傍検索では検索タームに付けられた重みは無視されます。