構文
Havenaskでは、組み込み演算子を使用して計算式を作成できます。次の表は、サポートされている演算子について説明しています。
操作 | 演算子 | 説明 |
単項演算 | - | マイナス記号(-)は、特定の式を使用して得られた値の負の値を取得するために使用されます。例:-1 および -max(width)。 |
算術演算 | +, -, *, / | 例:width/10。 |
関係演算 | ==,!= ,>, <, >=, <= | 例:width >= 400。 |
論理演算 | and ,or,! | 例:width >= 400 and height >= 300、!(a > 1 and b < 2)。 |
ビット演算 | &, |,^ | 例:3 & (price ^ pubtime) + (price | pubtime)。 |
条件演算 | if(cond, thenValue, elseValue) | cond パラメーター値がゼロ以外の場合、thenValue が返され、cond パラメーター値がゼロの場合、elseValue が返されます。たとえば、if(2, 3, 5) は 3 を返し、if(0, 3, 5) は 5 を返します。注:cond パラメーターの値は、LITERAL 型または TEXT 型の値などの文字列にすることはできません。値の範囲は、INT32 型の値の範囲と同じである必要があります。 |
IN 演算 | i in [value1, value2, …, valuen] | i が集合 [value1, value2, …, valuen] に含まれている場合、式は 1 を返します。それ以外の場合、0 が返されます。たとえば、2 in [2, 4, 6] は 1 を返し、3 in [2, 4, 6] は 0 を返します。 |
スキーマで定義されている属性フィールド、組み込み関数、およびその他のさまざまな機能関数を使用して式を作成できます。
組み込み関数
関数 | 説明 |
max(a, b) | a と b のうち大きい方の値を返します。 |
min(a, b) | a と b のうち小さい方の値を返します。 |
ln(a) | a の自然対数を返します。 |
log2(a) | 底が 2 の a の対数を返します。 |
log10(a) | 底が 10 の a の対数を返します。 |
sin(a) | a の正弦を返します。 |
cos(a) | a の余弦を返します。 |
tan(a) | a の正接を返します。 |
asin(a) | a の逆正弦を返します。 |
acos(a) | a の逆余弦を返します。 |
atan(a) | a の逆正接を返します。 |
ceil(a) | a 以上の最小の整数を返します。たとえば、ceil(4.2) は 5 を返します。 |
floor(a) | a 以下の最大の整数を返します。たとえば、floor(4.6) は 4 を返します。 |
sqrt(a) | a の平方根を返します。たとえば、sqrt(4) は 2 を返します。 |
pow(a,b) | a の b 乗の結果を返します。たとえば、pow(2, 3) は 8 を返します。 |
now() | 1970 年 1 月 1 日 00:00:00 UTC から経過した秒数を返します。 |
random() | 0 から 1 までのランダムな値を返します。 |
機能関数
関数 | 説明 | 簡易ソート式 | 精密ソート式 |
クエリとドキュメントの一致度を示す静的テキスト関連性のスコアを返します。 | サポートされています | サポートされていません | |
特定の検索クエリの最大重みを返します。 | サポートされています | サポートされています | |
ドキュメントのタイムリネススコアを返します。 | サポートされています | サポートされています | |
ドキュメントのタイムリネススコアを返します。 | サポートされています | サポートされています | |
異なるアルゴリズムに基づいて数値を [0,1] の範囲の値に正規化します。 | サポートされています | サポートされています | |
2 点間の球面距離を返します。ほとんどの場合、この関数を使用して、位置情報サービス (LBS) の距離を計算できます。 | サポートされています | サポートされています | |
ガウス関数を使用して、値と指定された開始点との距離に基づいて減衰度を計算します。 | サポートされています | サポートされています | |
線形関数を使用して、値と指定された開始点との距離に基づいて減衰度を計算します。 | サポートされています | サポートされています | |
指数関数を使用して、値と指定された開始点との距離に基づいて減衰度を計算します。 | サポートされています | サポートされています | |
クエリステートメントの kvpairs 句で指定されたフィールドの値を返します。 | サポートされています | サポートされています | |
指定されたフィールドの値が指定された値セットに含まれているか、指定された値セットに含まれていないかを確認します。 | サポートされています | サポートされています | |
検索クエリのキーワードをドキュメントのタグと照合し、一致したタグの重みに基づいてドキュメントのスコアを生成します。 | サポートされています | サポートされています | |
簡易ソート式を使用して計算されたスコアを返します。 | サポートされていません | サポートされています | |
検索クエリのキーワードと指定されたフィールドのテキストとの関連性スコアを計算します。 | サポートされていません | サポートされています | |
検索クエリに一致する語句の数と特定のフィールドの語句の総数との比率を返します。 | サポートされていません | サポートされています | |
特定のフィールドの一致する語句の数と検索クエリのキーワードの総数との比率を返します。 | サポートされていません | サポートされています | |
検索クエリのキーワードと特定のフィールドの語句との近接度を返します。 | サポートされていません | サポートされています | |
特定のフィールドの語句の数を返します。 | サポートされていません | サポートされています | |
指定されたアナライザーが検索クエリをトークン化した後の語句の数を返します。 | サポートされていません | サポートされています | |
ドキュメントの語句に一致する検索クエリの語句の数を返します。 | サポートされていません | サポートされています | |
検索クエリに一致する特定のフィールドの語句の数を返します。 | サポートされていません | サポートされています | |
検索クエリが一致する特定のフィールドの語句の数と、フィールド内のこれらの語句の最小ウィンドウとの比率を返します。 | サポートされていません | サポートされています |
ソート式を作成する
簡易ソート式を作成する
簡易ソート式を作成するには、kvpairs 句に first_formula パラメーターを含める必要があります。 first_formula パラメーターを使用する式に設定します。 config 句に rank_trace パラメーターを含めて、計算ロジックを表示することもできます。例:
config=start:0,hit:10,rank_trace:DEBUG,format:json&&query=default:'Search'&&kvpairs=first_formula:price*0.1精密ソート式を作成する
精密ソート式を作成するには、kvpairs 句に formula パラメーターを含める必要があります。 formula パラメーターの値を使用する式に設定します。 config 句に rank_trace パラメーターを含めて、計算ロジックを表示することもできます。例:
config=start:0,hit:10,rank_trace:DEBUG,format:json&&query=default:'Search'&&kvpairs=formula:price*0.1使用上の注意
多数のドキュメントをクエリする場合は、簡易行式で適切な数のドキュメントを指定します。データの処理に長時間を要する簡易ソート式を使用すると、タイムアウトエラーによりクエリが失敗する可能性があります。
同じクエリで簡易ソート式と精密ソート式を指定できます。