ソート句は、1 つ以上のフィールドによってクエリ結果の順序を制御します。ソート句がない場合、結果はデフォルトで関連性スコア (RANK) の降順になります。
構文
ソート句は次の形式に従います:
+field1;-field2+は、フィールドを昇順でソートします。-は、フィールドを降順でソートします。複数のソートルールはセミコロン (
;) で区切ります。算術演算子 (
+、-、*、/) でフィールドを連結し、計算値でソートします。演算子で結合されるフィールドは、同じデータ型である必要があります。RANKフィールドでソートすると、ソート式によって計算された関連性スコア順に結果が並べ替えられます。
クイックリファレンス
| 例 | 結果 |
|---|---|
+price | price の昇順 |
-price | price の降順 |
-(hits+comments) | hits と comments の合計値の降順 |
+type;-RANK | type の昇順。同順位の場合は関連性スコアの降順 |
+distance(lon,lat,"120.34256","30.56982") | 指定された座標からの距離の昇順 |
多次元ソート
ソート句には、セミコロンで区切って複数のソートルールを指定できます。結果は最初のルールでソートされ、値が等しい場合は次のルールが適用され、以降も同様です。
sort=-field1;-field2;-field3多次元ソートのパフォーマンスはフィールドの特性に依存し、保証されません。パフォーマンスを向上させるには、高度ソート式を使用して複数のフィールドシグナルを単一の数値スコアに結合することを推奨します:
normalize(field1)*100+normalize(field2)*10+normalize(field3)+first_phase_score*10000ここで、first_phase_score は基本ソート式によって計算されるスコアです。このアプローチでは、ソートのパフォーマンスが予測可能になり、フィールドの重みを明示的に調整できます。詳細については、「高度ソート関数」をご参照ください。
制限事項
ソート句はオプションです。ソート句がない場合、結果は
RANKの降順でソートされます。ソート句にRANKフィールドが含まれていない場合、ソート式は有効になりません。ソート句内のフィールドは、アプリケーションスキーマで定義された属性フィールドでなければなりません。
INT または FLOAT 値を返す機能関数は、ソートフィールドとして使用できます。
LITERAL フィールドの場合: 文字はアルファベット順、数字は各桁の値で、漢字は文字コード順にソートされます。
配列フィールドは、ほとんどのシナリオでサポートされていません。
サポートされる機能関数
distance
2 点間の球面距離を返します。一般的に、位置情報サービス (LBS) のシナリオで、近接度によって結果をソートするために使用されます。
例: レストランの検索結果を距離の昇順でソートします。
query=default:'Restaurant name'&&sort=+distance(lon,lat,"120.34256","30.56982")関数の完全なリファレンスについては、「distance」をご参照ください。
tag_match
タグによってドキュメントとクエリ句を照合し、一致したタグの重みに基づいてドキュメントをスコアリングします。
例:
sort=-tag_match("user_options", options, "mul", "sum", "false", "true", 100)関数の完全なリファレンスについては、「tag_match」をご参照ください。
例
フィールドによるソート、次に関連性によるソート
"Zhejiang University" を検索し、結果を type の昇順でソートします。同順位の場合はテキスト関連性の降順でソートします。
query=default:'Zhejiang University'&&sort=+type;-RANK高度ソート式には text_relevance(field) を指定できます。ソートポリシーの設定の詳細については、「ソートポリシーの設定」をご参照ください。
計算値によるソート
"Zhejiang University" を検索し、hits と comments の合計値の降順で結果をソートします。
query=default:'Zhejiang University'&&sort=-(hits+comments)