概要
並べ替え句を指定して、指定したフィールドに基づいてクエリ結果を昇順または降順に並べ替えることができます。
説明
並べ替え句の構文: +フィールド1;-フィールド2。
field1 と field2 は、クエリ結果の並べ替えの基準となるフィールドです。プラス記号 (+) は、クエリ結果が field1 に基づいて昇順に並べ替えられることを指定します。マイナス記号 (-) は、クエリ結果が field2 に基づいて降順に並べ替えられることを指定します。
フィールドは、加算(+)、減算(-)、乗算(*)、除算(/)などの基本的な算術演算子で接続できます。演算子で接続されているフィールドは、同じデータ型である必要があります。
OpenSearch は多次元並べ替えをサポートしています。並べ替え句に複数の並べ替えルールを指定し、セミコロン(;)で並べ替えルールを区切ることができます。クエリに複数の並べ替えルールを指定した場合、システムは並べ替え句の最初の並べ替えルールに基づいてクエリ結果を並べ替え、次に最初の並べ替え中に取得された関連性スコアが同じであるクエリ結果を2番目の並べ替えルールに基づいて並べ替えます。このプロセスは、すべてのクエリ結果が期待どおりに並べ替えられるまで続きます。
並べ替え句で RANK を並べ替えルールとして指定できます。RANK は、指定した並べ替え式に基づいて計算された関連性スコアを指定します。
使用方法に関する注意事項
並べ替え句はオプションです。ステートメントに並べ替え句を含めない場合、デフォルトの並べ替え句 sort=-RANK が使用されます。システムは、指定した並べ替え式に基づいて計算された関連性スコアに基づいて、クエリ結果を降順に並べ替えます。並べ替え句に RANK を指定しない場合、指定した並べ替え式は有効になりません。
並べ替え句に指定するフィールドは、schema.json ファイルに指定した属性フィールドである必要があります。
戻り値が INT 型または FLOAT 型である機能関数は、並べ替え句のフィールドとして使用できます。
並べ替え句に LITERAL 型のフィールドを指定した場合、システムは文字をアルファベット順に並べ替え、数値を降順に並べ替え、漢字を ASCII 値に基づいて並べ替えます。
ほとんどの場合、並べ替え句は ARRAY 型のフィールドをサポートしていません。
並べ替え句に sort=-field1;-field2;-field3 などの複数の並べ替えルールが含まれている場合、並べ替えのパフォーマンスは、並べ替えルールに指定されている各フィールドのデータによって異なります。安定した並べ替えパフォーマンスを確保するために、RANK を指定して並べ替えルールを作成することをお勧めします。たとえば、適切な並べ替え式は normalize(field1)*100+normalize(field2)*10+normalize(field3)+first_phase_score*10000 となります。ここで、first_phase_score は大まかな並べ替え式によって計算されたスコアを指定します。詳細については、精密な並べ替え関数を参照してください。
サポートされている機能関数
distance:2 点間の球面距離を返します。ほとんどの場合、この関数は位置情報サービス(LBS)の距離計算に使用されます。
例:
次のクエリは、ユーザーがレストランを検索していることを示しています。distance 関数は、距離に基づいてクエリ結果を昇順に並べ替えるために使用されます:
query=default:'レストラン名'&&sort=+distance(lon,lat,"120.34256","30.56982")
tag_match:検索クエリのキーワードをドキュメントのタグと照合し、一致したタグの重み付けに基づいてドキュメントのスコアを生成します。関数の詳細については、上記のリンクをクリックしてください。
例:
sort=-tag_match("user_options", options, "mul", "sum", "false", "true", 100).
例
アプリケーションで「浙江大学」を含むドキュメントをクエリし、結果をタイプ別に昇順に並べ替えます。複数のドキュメントのタイプが同じ場合は、テキストの関連性でドキュメントを並べ替えます。詳細については、並べ替え式の構成を参照してください。
query=default:'浙江大学'&&sort=+type;-RANK // 精密な並べ替え式には text_relevance(field) を含めることができます。
アプリケーションで「浙江大学」を含むドキュメントをクエリし、ヒット数とコメント数の合計で降順に並べ替えます。
query=default:'浙江大学'&&sort=-(hits+comments)