All Products
Search
Document Center

OpenSearch:Konfigurasikan kebijakan pengurutan

Last Updated:Apr 02, 2026

OpenSearch mengurutkan hasil pencarian dalam dua tahap berurutan: Rough Sort dan Fine Sort. Rough sort dengan cepat memilih N kandidat teratas dari seluruh dokumen yang cocok, sedangkan fine sort menerapkan ekspresi penilaian yang lebih canggih terhadap kandidat tersebut untuk menghasilkan peringkat akhir. Dengan mengonfigurasi kedua tahap ini, Anda dapat menyeimbangkan throughput dan relevansi secara independen.

Operasi dasar — aritmetika, relasional, logika, dan kondisional — memerlukan nilai bertipe NUMERIC. Sebagian besar operasi berbasis fungsi tidak dapat diterapkan pada nilai bertipe STRING.

Cara kerja

Semua dokumen yang cocok pertama-tama memasuki rough sort. Ekspresi rough sort memberi skor pada setiap dokumen dan memilih N dokumen teratas. Dokumen-dokumen tersebut kemudian memasuki fine sort, di mana ekspresi kedua menghasilkan skor akhir mereka. Dokumen yang tidak mencapai fine sort mempertahankan skor rough sort-nya.

Perhitungan skor:

KonfigurasiRumus skorCap
Hanya rough sort10.000 + hasil rough sort20.000
Hanya fine sort10.000 + hasil fine sortTidak ada
Kedua tahap — dokumen yang memasuki fine sort10.000 + hasil fine sortTidak ada
Kedua tahap — dokumen yang tidak mencapai fine sort10.000 + hasil rough sort20.000

Batasan:

  • first_rank_name menerima tepat satu nama ekspresi rough sort. Beberapa ekspresi rough sort tidak dapat dijalankan secara bersamaan.

  • second_rank_name menerima tepat satu nama ekspresi fine sort. Beberapa ekspresi fine sort tidak dapat dijalankan secara bersamaan.

  • Anda dapat mendefinisikan beberapa kebijakan pengurutan, tetapi hanya satu kebijakan rough sort dan satu kebijakan fine sort yang dapat aktif per kueri.

Referensi ekspresi pengurutan

Ekspresi pengurutan (juga disebut formula peringkat) menggabungkan operasi dasar, fungsi numerik, dan fungsi fitur bawaan untuk menghasilkan skor dokumen.

Operasi dasar

OperasiOperatorContoh
Unary--1, -max(width)
Aritmetika+, -, *, /width/10
Relasional==, !=, >, <, >=, <=width >= 400
Logisand, or, !width >= 400 and height >= 300
Bitwise&, |, ^3 & (price ^ pubtime) + (price | pubtime)
Kondisionalif(cond, thenValue, elseValue)if(2, 3, 5) mengembalikan 3; if(0, 3, 5) mengembalikan 5. cond tidak boleh bertipe LITERAL atau TEXT; rentang nilainya sesuai dengan INT32.
INi in [value1, value2, …, valueN]2 in [2, 4, 6] mengembalikan 1; 3 in [2, 4, 6] mengembalikan 0

Fungsi numerik

FungsiNilai Kembali
max(a, b)Nilai lebih besar antara a dan b
min(a, b)Nilai lebih kecil antara a dan b
ln(a)Logaritma natural dari a
log2(a)Logaritma basis-2 dari a
log10(a)Logaritma basis-10 dari a
sin(a)Sinus dari a
cos(a)Kosinus dari a
tan(a)Tangen dari a
asin(a)Arcsinus dari a
acos(a)Arckosinus dari a
atan(a)Arktangen dari a
ceil(a)Bilangan bulat terkecil ≥ a. ceil(4,2) mengembalikan 5.
floor(a)Bilangan bulat terbesar yang ≤ a. floor(4.6) mengembalikan 4.
sqrt(a)Akar kuadrat dari a. sqrt(4) mengembalikan 2.
pow(a, b)a dipangkatkan b. pow(2, 3) mengembalikan 8.
now()Detik yang telah berlalu sejak 00:00:00 1 Januari 1970 UTC
random()Nilai acak dalam rentang [0, 1]

Fungsi fitur bawaan

OpenSearch menyediakan fungsi fitur bawaan untuk skenario layanan berbasis lokasi (LBS), teks, dan ketepatan waktu. Gabungkan fungsi-fungsi tersebut dalam ekspresi pengurutan untuk membangun peringkat berbasis relevansi yang kompleks. Untuk daftar lengkapnya, lihat fungsi rough sort dan fungsi fine sort.

Plugin pengurutan berbasis Cava

Cava adalah bahasa berorientasi objek yang dikembangkan oleh tim mesin OpenSearch berdasarkan proyek low-level virtual machine (LLVM). Sintaksnya dimodelkan setelah Java dan mampu mencapai performa seefisien C++. Cava mendukung kompilasi just-in-time (JIT) serta pemeriksaan keamanan bawaan.

Gunakan Cava saat ekspresi pengurutan tidak cukup ekspresif:

  • Alur kendali yang lebih kaya: Tulis loop for, definisikan fungsi pembantu, dan buat kelas kustom.

  • Maintenance lebih mudah: Kode Cava lebih mudah dibaca daripada ekspresi bersarang yang sangat dalam.

  • Sintaks yang familiar: Developer dengan pengalaman Java dapat mengadopsi Cava dengan kurva pembelajaran minimal.

Penting

Plugin berbasis Cava hanya tersedia di aplikasi eksklusif.

Konfigurasikan kebijakan pengurutan di konsol

Langkah-langkah berikut menunjukkan cara menyiapkan pengurutan berbasis relevansi teks menggunakan static_bm25 untuk rough sort dan text_relevance untuk fine sort.

Prasyarat

Sebelum memulai, pastikan Anda telah memiliki:

  • Aplikasi OpenSearch High-performance Search Edition

  • Akses ke konsol OpenSearch

Langkah 1: Buat kebijakan rough sort

  1. Masuk ke konsol OpenSearch. Di pojok kiri atas, pilih OpenSearch High-performance Search Edition.

  2. Di panel navigasi kiri, pilih Search Configuration Center > Sort Configuration.

  3. Klik Policy Management, lalu klik Create.

  4. Tentukan Policy Name, atur Scope ke Rough Sort, dan atur Type ke Expression. Klik Next. imageimage

  5. Pilih static_bm25 sebagai Scoring Characteristics dan atur Weight ke 10. Bobot 10 mengalikan skor BM25 dengan 10 dalam perhitungan akhir.

    image

  6. (Opsional) Tambahkan bidang pencarian dan bobotnya. Bidang tersebut harus merupakan bidang atribut dengan tipe numerik (INT, DOUBLE, atau FLOAT). Skornya akan ditambahkan ke total.

    image

  7. Klik Back untuk kembali ke halaman Policy Management.

    image

Langkah 2: Buat kebijakan fine sort

  1. Di halaman Policy Management, klik Create.

  2. Tentukan Policy Name, atur Scope ke Fine Sort, dan atur Type ke Expression. Klik Next.

    image

  3. Dari daftar drop-down Built-in Functions, pilih text_relevance. Masukkan nama bidang target di dalam tanda kurung, lalu klik Completed.

    image

  4. Klik Back untuk kembali ke halaman Policy Management.

    image

Verifikasi hasil pengurutan

  1. Buka halaman Search Test.

  2. Atur bidang rough sort dan fine sort, lalu aktifkan Show Sort Details.

    image

  3. Jalankan kueri. Hasilnya menampilkan skor yang diberikan oleh setiap fungsi.

    image

Terapkan kebijakan pengurutan dengan SDK

Tentukan kebijakan pengurutan dalam kode untuk mengganti pengaturan default yang ditetapkan di konsol.

Java SDK:

// Tetapkan kebijakan rough sort dan fine sort.
// Pengaturan SDK mengambil prioritas dibanding pengaturan default di konsol.
Rank rank = new Rank();
rank.setFirstRankName("default");   // nama kebijakan rough sort
rank.setSecondRankName("default");  // nama kebijakan fine sort
rank.setReRankSize(5);              // jumlah dokumen yang diteruskan ke fine sort

PHP SDK:

// Tetapkan kebijakan rough sort dan fine sort.
$params->setFirstRankName('default');   // nama kebijakan rough sort
$params->setSecondRankName('default');  // nama kebijakan fine sort

Periksa skor pengurutan

Untuk melihat skor pengurutan per dokumen dalam respons, tambahkan format:fulljson; ke klausa konfigurasi.

Respons mencakup sortExprValues, yaitu larik nilai bidang pengurutan untuk setiap dokumen. Misalnya, dengan sort=-price;-RANK, sortExprValues adalah [price, skor dokumen]. Konsol OpenSearch menggunakan skor dokumen untuk mengurutkan hasil. Jika tidak ada klausa pengurutan yang ditentukan, urutan pengurutan default akan diterapkan.

Langkah berikutnya