Ikhtisar
Gunakan klausa pengurutan untuk mengonfigurasi aturan pengurutan hasil kueri. Aturan ini menentukan bidang yang digunakan untuk pengurutan serta urutannya, baik secara naik (ascending) maupun turun (descending).
Sintaksis
Sintaksis klausa pengurutan: +bidang1;-bidang2
bidang1 dan bidang2 adalah bidang yang digunakan untuk mengurutkan hasil kueri. Tanda tambah (+) menunjukkan pengurutan berdasarkan bidang1 dalam urutan naik, sedangkan tanda minus (-) menunjukkan pengurutan berdasarkan bidang2 dalam urutan turun.
Bidang dapat dihubungkan menggunakan operator aritmatika dasar seperti penambahan (+), pengurangan (-), perkalian (*), dan pembagian (/). Bidang yang dihubungkan oleh operator harus memiliki tipe data yang sama.
OpenSearch mendukung pengurutan multidimensi, yang memungkinkan sebuah klausa pengurutan mencakup beberapa aturan pengurutan. Aturan tersebut dipisahkan dengan titik koma (;). Hasil kueri pertama-tama diurutkan berdasarkan aturan pertama. Jika nilai bidang pertama sama, hasil kueri kemudian diurutkan berdasarkan aturan kedua, dan seterusnya hingga semua hasil terurut.
Hasil kueri juga dapat diurutkan berdasarkan bidang RANK, yang nilainya dihitung melalui ekspresi pengurutan dan merepresentasikan relevansi hasil.
Batasan
Klausa pengurutan bersifat opsional. Jika tidak disertakan, hasil kueri akan diurutkan secara default dalam urutan turun berdasarkan bidang RANK. Namun, jika klausa pengurutan eksplisit tidak melibatkan bidang RANK, ekspresi pengurutan yang telah didefinisikan tidak akan berlaku.
Bidang yang digunakan dalam klausa pengurutan harus ditentukan sebagai bidang atribut dalam skema aplikasi.
Fungsi dengan nilai balik bertipe INT atau FLOAT dapat digunakan sebagai bidang dalam klausa pengurutan.
Jika klausa pengurutan mencakup bidang bertipe LITERAL, huruf-huruf diurutkan secara alfabetis, angka diurutkan berdasarkan digit pada setiap posisi satu per satu, dan karakter Cina diurutkan berdasarkan nilai ASCII-nya.
Dalam sebagian besar kasus, klausa pengurutan tidak mendukung bidang bertipe ARRAY.
Kinerja pengurutan multidimensi, seperti sort=-bidang1;-bidang2;-bidang3, bergantung pada karakteristik masing-masing bidang. Oleh karena itu, kinerja pengurutan multidimensi tidak dijamin. Sebagai alternatif, gunakan ekspresi pengurutan. Contohnya, Anda dapat mendefinisikan ekspresi pengurutan halus berikut: normalisasi(bidang1)*100+normalisasi(bidang2)*10+normalisasi(bidang3)+skor_fase_pertama*10000. Dalam ekspresi ini, skor_fase_pertama menentukan skor yang dihitung oleh ekspresi pengurutan kasar. Untuk informasi lebih lanjut, lihat Fungsi Pengurutan Halus.
Fungsi fungsionalitas yang didukung
jarak: Mengembalikan jarak bola antara dua titik. Fungsi ini umumnya digunakan dalam perhitungan jarak untuk layanan berbasis lokasi (LBS).
Contoh:
Kueri berikut mencari restoran dan mengurutkan hasil berdasarkan jarak dalam urutan naik:
query=default:'Nama Restoran'&&sort=+distance(lon,lat,"120.34256","30.56982")tag_match: Mencocokkan klausa kueri dengan dokumen berdasarkan tag dan memberi skor dokumen dengan menghitung bobot tag yang cocok.
Contoh: (Untuk detail lebih lanjut tentang fungsi ini, klik tautan di atas):
sort=-tag_match("opsi_pengguna", opsi, "mul", "sum", "false", "true", 100)
Contoh-contoh
Kueri dokumen dalam aplikasi yang mengandung "Universitas Zhejiang" dan urutkan hasil berdasarkan tipe dalam urutan naik. Jika beberapa dokumen memiliki tipe yang sama, urutkan berdasarkan relevansi teks. Untuk informasi lebih lanjut, lihat Konfigurasikan Kebijakan Pengurutan.
query=default:'Universitas Zhejiang'&&sort=+type;-RANK // Ekspresi pengurutan halus dapat berupa text_relevance(bidang).Kueri dokumen dalam aplikasi yang mengandung "Universitas Zhejiang" dan urutkan hasil berdasarkan jumlah hits dan komentar dalam urutan turun:
query=default:'Universitas Zhejiang'&&sort=-(hits+comments)