ランキング数式

Prev Next

Classic/VPC環境で利用できます。

検索結果を求める方式でソートする際にランキング数式を活用できます。ランキング数式を作成し、検索の際に適用する方法を説明します。

参考

ソート方式を別途設定しない場合は、検索結果を文書加重値(qds)が高い順にソートします。

ランキング数式

ランキング数式は検索結果のソート基準であるランキング点数を計算する式です。一般的にランキング点数は適合度(_relevance)として表示し、類似度(_similarity)と品質(_quality)の合計で計算します。
例) ドメイン作成時に提供するデフォルトランキング(clous)のランキング数式

_ratio=0.5;
_quality=1.0;
_similarity=qds;
_relevance = _similarity * _ratio + _quality * (1 - _ratio);

ランキング数式を直接作成すると、それぞれの検索サービスに適合した順番で検索結果をソートします。

ランキング数式の作成

ランキング数式の基本的な作成方法は次の通りです。

  • 1つの関数タイプで代入文のみ使用します。
    relevance = qds;
    relevance() = qds; // 上と完全に同じです。
    relevance( x ) = x*qds;
    
  • 全行をセミコロン(;)で区分して文字列で入力します。
  • 様々な変数とプロパティ値、表現式、組み込み関数を使用して作成します。
    例) ランキング数式の作成例
    relevance = min(qry_mtc("q1"), qry_mtc("q2"));
    normalized_qds = qds/qtermc;
    normalized_qds_of_q1 = qry_qds("q1") / qry_qtermc("q1");
    mtratio = mtc/qtermc;
    

ランキング変数およびプロパティ値

ランキング数式の作成時にランキング変数と共に様々なプロパティ値を使用できます。

参考
  • すべての変数は内部でタイプ(bool | int | double | string)を有します。
  • アンダースコア(_)で始まる変数は内部向けで予約されています。

ランキング変数

ランキング数式の作成時に使用できるランキング変数は、次の通りです。

  • 文書のプロパティ値を表す関数(dp_섹션이름): セクション作成時に設定するランキング変数
    例) 文書のプロパティ値を利用したランキング数式
    _ratio=0.5;
    _quality= dp_like_cnt * 0.09 + dp_dislike_cnt * 0.01;
    _similarity=qds;
    _relevance = _similarity * _ratio + _quality * (1 - _ratio);
    
  • 求める変数を直接定義

クエリプロパティ

ランキング数式の作成時に使用できるクエリプロパティの値は、次の通りです。

  • qtermc: クエリの検索キーワード数であり、 qdsに加算されるタームの数(Query-Term-Count)
  • qry_qtermc(query_name): 特定クエリ(query_name)の検索キーワード数であり、複合クエリの場合に個別クエリの検索キーワード数を得るために使用
  • qry_exist(query_name): 特定クエリ(query_name)の存在有無を返却
  • epoch_time: クエリ実行開始時点の時間

文書スコア

ランキング数式の作成時に使用できる文書のプロパティ値は次の通りです。

  • qds: 文書加重値、クエリ文書の類似度(Query-Document-Score)
  • qry_qds(query_name): 特定クエリ(query_name)に対する文書加重値
  • mtc: 検索対象文書に含まれているクエリのターム数(Matched-Term-Count)
  • qry_mtc(query_name): 特定クエリ(query_name)に対する検索対象文書に含まれたクエリのターム数(mtc)

その他

ランキング数式の作成時に使用できるその他のプロパティ値は次の通りです。

  • total_document_count: 合計検索結果の文書数(推定)
    • 文書アップロードのリクエストが実行中の場合、合計文書数は変更される可能性があります。

表現式および組み込み関数

ランキング数式の作成時に様々な表現式と組み込み関数が使用できます。

表現式

ランキング数式の作成時に使用できる表現式は次の通りです。

  • 算術演算子: +-*/
  • 比較演算子: ><>=<===!=
  • 論理演算子: |&!
  • 定数表現: 整数、実数、truefalse
  • 条件表現式: if - then - else

例) 表現式を使用して作成したランキング数式

mtr = mtc/qtermc;
quality = 1.0;
relevance = if mtr >= 0.6 then qds + quality else quality;

組み込み関数

ランキング数式の作成時に使用できる組み込み関数は次の通りです。

  • min(a, b): 最小値
  • max(a, b): 最大値
  • exp(x): 指数
  • log(x): 自然ログ
  • log10(x): ログ
  • sqrt(x): 平方根
  • pow(x, y): xの y乗

ランキング数式の使用

作成したランキング数式は検索時に検索クエリを次のように作成して使用できます。

  • ランキングモジュールにランキング数式を保存した場合
    • rankingフィールドで使用するランキングモジュールを指定
    • sortランキング数式で計算したランキング変数をフィールドのパラメータとして指定
      • ランキングモジュールをデフォルトランキングとして設定する場合、rankingフィールドの設定は不要です。
  • 検索クエリに直接、ランキング数式を入力する場合
    • rankingフィールドでランキング数式を直接入力
    • sortランキング数式で計算したランキング変数をフィールドのパラメータとして指定
参考
  • ランキングモジュールの作成およびランキング設定方法はランキング数式をご参照ください。
  • rankingおよびsortフィールドの作成方法は rankingおよび sortをご参照ください。

例) デフォルトランキングのランキング変数(relevance)をsortフィールドのパラメータに指定した検索クエリ

{
  "search": {
    "index_name": {
      "main": [
        {
          "name": "q1",
          "query": "term"
        },
        {
          "name": "q2",
          "query": "test"
        }
      ]
    }
  },
  "sort" : {
    "relevance": "desc"
  }
}