sort 句を指定して、指定したフィールドに基づいてクエリ結果を昇順または降順にソートできます。
説明
sort 句の構文: +フィールド 1;-フィールド 2.
field1 と field2 は、クエリ結果のソート基準となるフィールドです。プラス記号 (+) は、クエリ結果を field1 に基づいて昇順にソートすることを指定します。マイナス記号 (-) は、クエリ結果を field2 に基づいて降順にソートすることを指定します。
フィールドは、加算 (+) 、減算 (-) 、乗算 (*) 、除算 (/) などの基本的な算術演算子で接続できます。演算子で接続されているフィールドは、同じデータ型である必要があります。
OpenSearch は多次元ソートをサポートしています。 sort 句に複数のソートルールを指定し、ソートルールをセミコロン (;) で区切ることができます。クエリに複数のソートルールを指定した場合、システムは sort 句の最初のソートルールに基づいてクエリ結果をソートし、最初のソート中に取得された関連性スコアが同じであるクエリ結果を 2 番目のソートルールに基づいてソートします。このプロセスは、すべてのクエリ結果が期待どおりにソートされるまで続きます。
sort 句のソートルールとして RANK を指定できます。 RANK は、指定したソート式に基づいて計算された関連性スコアを指定します。
使用上の注意
sort 句は省略可能です。文に sort 句を含めない場合、デフォルトの sort 句 sort=-RANK が使用されます。システムは、指定したソート式に基づいて計算された関連性スコアに基づいて、クエリ結果を降順にソートします。 sort 句に RANK を指定しない場合、指定したソート式は有効になりません。
sort 句に指定するフィールドは、schema.json ファイルに指定した属性フィールドである必要があります。
戻り値が INT 型または FLOAT 型の機能関数を sort 句のフィールドとして使用できます。
sort 句に LITERAL 型のフィールドを指定した場合、システムは文字をアルファベット順にソートし、数値を降順にソートし、漢字を ASCII 値に基づいてソートします。
ほとんどの場合、sort 句は ARRAY 型のフィールドをサポートしていません。
sort 句に 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:'Restaurant name'&&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)