Ranking使用ガイド
Summary
- ランキングモジュールを利用すると、サービスに合わせて文書プロパティを類似度計算に反映できます。
- ランキング変数とランキングコードの作成方法を説明します。
- 基本ランキングに設定したモジュールは検索の際、rankingオプションがなくてもソートオプションにランキング変数を使用できます。
_ratio=0.5;
_quality=1.0;
_similarity=qds;
_relevance = _similarity * _ratio + _quality * (1 - _ratio);
- qds:インデックスを設定する際、デフォルトで適用される文書加重値で、類似度を意味します。
- 適合度(relevance)は通常、類似度(similarity)と品質(quality)の合計で表示します。
- 文書プロパティの値を読み取る関数を使って適用できます。
dp_セクション名
_ratio=0.5;
_quality= dp_like_cnt * 0.09 + dp_dislike_cnt * 0.01;
_similarity=qds;
_relevance = _similarity * _ratio + _quality * (1 - _ratio);
- 検索の際、sortオプションのparameterを
_relevance
に指定します。
{
...
"sort": {
"_relevance" : "asc|desc"
}
...
}
Ranking code
式
relevance = qds;
relevance() = qds; // 上と完全に同じです。
relevance( x ) = x*qds;
- すべての変数は内部的にタイプ(bool | int | double | string)があります。
- すべてのラインを
;
で区別して文字列で入力します。
表現式
- 算術演算子:
+
、-
、*
、/
- 比較演算子:
>
、<
、>=
、<=
、==
、!=
- 論理演算子:
|
, &
, !
- 定数表現:整数、実数、
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乗
クエリプロパティ
- qtermc:Query - Term - Count、クエリの検索キーワード数、qdsに加算されるターム数
- qry_qtermc(query_name):特定クエリのqtermc。 複合クエリの場合、個別クエリのqtermcを取得するために使用
- qry_exist(query_name):query_nameの名前のクエリがあるかどうかを返す
- epoch_time:クエリ実行開始時点の時間。
文書スコア
- qds : Query - Document - Score. 文書加重値、クエリ文書の類似度。
- qry_qds(query_name):特定クエリのqds
- mtc : Matched - Term - Count. 検索対象文書に含まれているクエリのターム数
- qry_mtc(query_name):特定クエリのmtc
その他
- total_document_count:合計検索結果の文書数(推定)
- 上記の組み込み関数だけでなく、
_
で始まるシンボルは内部用で予約されているため注意が必要です。
使用の例
Ranking code
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;
Search query
{
"search": {
"index_name": {
"main": [
{
"name": "q1",
"query": "term"
},
{
"name": "q2",
"query": "test"
}
]
}
},
"sort" : {
"relevance": "desc"
}
}
#