Klausa pengurutan mengontrol urutan hasil kueri berdasarkan satu atau beberapa bidang. Tanpa klausa ini, hasil secara default diurutkan menurun berdasarkan skor relevansi (RANK).
Sintaksis
Klausa pengurutan mengikuti format berikut:
+field1;-field2+mengurutkan bidang dalam urutan menaik.-mengurutkan bidang dalam urutan menurun.Pisahkan beberapa aturan pengurutan dengan titik koma (
;).Gabungkan bidang menggunakan operator aritmetika (
+,-,*,/) untuk mengurutkan berdasarkan nilai yang dihitung. Bidang yang digabungkan oleh operator harus memiliki tipe data yang sama.Urutkan berdasarkan bidang
RANKuntuk mengurutkan hasil berdasarkan skor relevansi, yang dihitung oleh ekspresi pengurutan.
Referensi Cepat
| Contoh | Hasil |
|---|---|
+price | Menaik berdasarkan price |
-price | Menurun berdasarkan price |
-(hits+comments) | Menurun berdasarkan jumlah hits dan comments |
+type;-RANK | Menaik berdasarkan type; hasil seri dipecahkan berdasarkan relevansi menurun |
+distance(lon,lat,"120.34256","30.56982") | Menaik berdasarkan jarak dari koordinat yang diberikan |
Pengurutan Multidimensi
Klausa pengurutan dapat mencakup beberapa aturan pengurutan yang dipisahkan oleh titik koma. Hasil diurutkan berdasarkan aturan pertama; jika nilainya sama, aturan berikutnya diterapkan, dan seterusnya.
sort=-field1;-field2;-field3Kinerja pengurutan multidimensi bergantung pada karakteristik bidang dan tidak dijamin. Untuk kinerja yang lebih baik, gunakan ekspresi penyortiran halus untuk menggabungkan beberapa sinyal bidang menjadi satu skor numerik:
normalize(field1)*100+normalize(field2)*10+normalize(field3)+first_phase_score*10000Di sini, first_phase_score adalah skor yang dihitung oleh ekspresi pengurutan kasar. Pendekatan ini memberikan kinerja pengurutan yang dapat diprediksi dan memungkinkan Anda menyesuaikan bobot bidang secara eksplisit. Untuk detail selengkapnya, lihat Fine sort functions.
Batasan
Klausa pengurutan bersifat opsional. Tanpa klausa tersebut, hasil diurutkan berdasarkan
RANKdalam urutan menurun. Jika klausa pengurutan tidak melibatkan bidangRANK, ekspresi pengurutan tidak berlaku.Bidang dalam klausa pengurutan harus merupakan bidang atribut yang didefinisikan dalam skema aplikasi.
Fungsi fungsionalitas yang mengembalikan nilai INT atau FLOAT dapat digunakan sebagai bidang pengurutan.
Untuk bidang LITERAL: huruf diurutkan secara alfabetis, angka diurutkan digit per digit pada setiap posisi, dan karakter Tionghoa diurutkan berdasarkan nilai ASCII.
Bidang ARRAY tidak didukung dalam sebagian besar skenario.
Fungsi Fungsionalitas yang Didukung
distance
Mengembalikan jarak bola antara dua titik. Umumnya digunakan untuk mengurutkan hasil berdasarkan kedekatan dalam skenario layanan berbasis lokasi (LBS).
Contoh: Urutkan hasil pencarian restoran berdasarkan jarak dalam urutan menaik.
query=default:'Restaurant name'&&sort=+distance(lon,lat,"120.34256","30.56982")Untuk referensi fungsi lengkap, lihat distance.
tag_match
Mencocokkan klausa kueri terhadap dokumen berdasarkan tag dan memberi skor dokumen berdasarkan bobot tag yang cocok.
Contoh:
sort=-tag_match("user_options", options, "mul", "sum", "false", "true", 100)Untuk referensi fungsi lengkap, lihat tag_match.
Contoh
Urutkan berdasarkan bidang, lalu berdasarkan relevansi
Cari "Zhejiang University" dan urutkan hasil berdasarkan type menaik, dengan hasil seri dipecahkan berdasarkan relevansi teks menurun.
query=default:'Zhejiang University'&&sort=+type;-RANKEkspresi penyortiran halus dapat berupa text_relevance(field). Untuk detail konfigurasi kebijakan pengurutan, lihat Configure sort policies.
Urutkan berdasarkan nilai bidang yang dihitung
Cari "Zhejiang University" dan urutkan hasil berdasarkan total gabungan hits dan comments dalam urutan menurun.
query=default:'Zhejiang University'&&sort=-(hits+comments)