ランキング数式
- 印刷する
- PDF
ランキング数式
- 印刷する
- PDF
Article Summary
Share feedback
Thanks for sharing your feedback!
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
: 合計検索結果の文書数(推定)- 文書アップロードのリクエストが実行中の場合、合計文書数は変更される可能性があります。
表現式および組み込み関数
ランキング数式の作成時に様々な表現式と組み込み関数が使用できます。
表現式
ランキング数式の作成時に使用できる表現式は次の通りです。
- 算術演算子:
+
、-
、*
、/
- 比較演算子:
>
、<
、>=
、<=
、==
、!=
- 論理演算子:
|
、&
、!
- 定数表現: 整数、実数、
true
、false
- 条件表現式:
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
ランキング数式で計算したランキング変数をフィールドのパラメータとして指定
参考
例) デフォルトランキングのランキング変数(relevance)をsort
フィールドのパラメータに指定した検索クエリ
{
"search": {
"index_name": {
"main": [
{
"name": "q1",
"query": "term"
},
{
"name": "q2",
"query": "test"
}
]
}
},
"sort" : {
"relevance": "desc"
}
}
この記事は役に立ちましたか?