全部产品
Search
文档中心

OpenSearch:Konfigurasi Kebijakan Pengurutan

更新时间:Jul 08, 2025

OpenSearch memberikan performa pencarian tinggi dengan membagi proses pengurutan menjadi dua fase: pengurutan kasar dan pengurutan halus. Fase pengurutan kasar memilih N dokumen berkualitas tinggi teratas dari semua dokumen yang diambil. Kemudian, dokumen tersebut dinilai dan diurutkan dalam fase pengurutan halus untuk menghasilkan hasil yang paling relevan bagi pengguna. Pengurutan kasar berfokus pada efisiensi, sementara pengurutan halus menentukan hasil akhir. Oleh karena itu, pengurutan kasar dirancang sederhana namun efisien, menggunakan faktor utama yang relevan untuk pengurutan halus. Kedua fase ini menggunakan ekspresi pengurutan.

Anda dapat menyesuaikan ekspresi pengurutan sesuai kebutuhan aplikasi dan menentukannya dalam kueri pencarian untuk mengurutkan hasil. Ekspresi pengurutan, juga dikenal sebagai rumus peringkat, mendukung operasi dasar, fungsi matematika, dan fungsi fitur. Operasi dasar mencakup aritmatika, relasional, logika, bitwise, dan operasi kondisional. OpenSearch menyediakan template ekspresi untuk skenario pencarian umum, seperti forum dan berita. Anda dapat memilih template yang sesuai berdasarkan karakteristik data Anda dan memodifikasinya untuk membuat ekspresi kustom.

Sebelum melakukan pengurutan halus berdasarkan relevansi, pastikan Anda memahami cara kerja kebijakan pengurutan. Setelah dokumen yang memenuhi kriteria ditemukan melalui kueri, dokumen tersebut diurutkan. Untuk informasi lebih lanjut, lihat Klausa Pengurutan. Jika klausa pengurutan tidak ditentukan atau fungsi peringkat telah ditentukan, skor dihitung berdasarkan relevansi.

Ekspresi pengurutan untuk kedua fase dapat dirancang sesuai kebutuhan pencarian aktual Anda. Untuk panduan merancang dan mengatur faktor pengurutan dalam skenario tipikal, lihat Melakukan Pencarian Berdasarkan Relevansi.

Catatan

Untuk operasi dasar seperti aritmatika, relasional, logika, dan kondisional, gunakan angka atau nilai bidang tipe NUMERIC dalam ekspresi pengurutan. Sebagian besar operasi berbasis fungsi tidak didukung untuk nilai tipe STRING.

Operasi Dasar

Operasi

Operator

Deskripsi

Operasi Unary

-

Tanda minus (-) digunakan untuk mendapatkan negatif dari nilai yang diperoleh dengan menggunakan ekspresi tertentu. Contoh: -1 dan -max(width).

Operasi Aritmatika

+, -, *, /

Contoh: width/10

Operasi Relasional

==,!= ,>, <, >=, <=

Contoh: width >= 400

Operasi Logika

and ,or,!

Contoh: width >= 400 and height >= 300, !(a > 1 and b < 2)

Operasi Bitwise

&, |,^

Contoh: 3 & (price ^ pubtime) + (price | pubtime)

Operasi Kondisional

if(cond, thenValue, elseValue)

thenValue dikembalikan jika nilai parameter cond bukan nol, dan elseValue dikembalikan jika nilai parameter cond adalah nol. Contoh: if(2, 3, 5) mengembalikan 3, dan if(0, 3, 5) mengembalikan 5. Catatan: Nilai parameter cond tidak boleh berupa string, seperti nilai tipe LITERAL atau TEXT. Rentang nilai harus sama dengan rentang nilai tipe INT32.

Operasi IN

i in (value1, value2, …, valuen)

Ekspresi mengembalikan 1 jika i terdapat dalam himpunan (value1, value2, …, valuen). Jika tidak, 0 dikembalikan. Contoh: 2 in (2, 4, 6) mengembalikan 1, dan 3 in (2, 4, 6) mengembalikan 0.

Fungsi Matematika

Fungsi

Deskripsi

max(a, b)

Mengembalikan nilai yang lebih besar antara a dan b.

min(a, b)

Mengembalikan nilai yang lebih kecil antara a dan b.

ln(a)

Mengembalikan logaritma natural dari a.

log2(a)

Mengembalikan logaritma dari a dengan basis 2.

log10(a)

Mengembalikan logaritma dari a dengan basis 10.

sin(a)

Mengembalikan sinus dari a.

cos(a)

Mengembalikan kosinus dari a.

tan(a)

Mengembalikan tangen dari a.

asin(a)

Mengembalikan arcsinus dari a.

acos(a)

Mengembalikan arccosinus dari a.

atan(a)

Mengembalikan arctangen dari a.

ceil(a)

Mengembalikan bilangan bulat terkecil yang lebih besar dari atau sama dengan a. Contoh: ceil(4.2) mengembalikan 5.

floor(a)

Mengembalikan bilangan bulat terbesar yang lebih kecil dari atau sama dengan a. Contoh: floor(4.6) mengembalikan 4.

sqrt(a)

Mengembalikan akar kuadrat dari a. Contoh: sqrt(4) mengembalikan 2.

pow(a,b)

Mengembalikan hasil dari a pangkat b. Contoh: pow(2, 3) mengembalikan 8.

now()

Mengembalikan jumlah detik yang telah berlalu sejak 00:00:00 tanggal 1 Januari 1970 dalam Waktu Universal Terkoordinasi (UTC).

random()

Mengembalikan nilai acak dari 0 hingga 1.

Fungsi Fitur Bawaan

OpenSearch menyediakan berbagai Fungsi Pengurutan Kasar, seperti fungsi layanan berbasis lokasi (LBS), teks, dan ketepatan waktu. Anda dapat menggabungkan fungsi fitur dalam ekspresi pengurutan untuk mencapai pengurutan kompleks berdasarkan relevansi.

Plug-in Berbasis Cava

Cava adalah bahasa pemrograman efisien yang dikembangkan oleh tim OpenSearch berdasarkan proyek low-level virtual machine (LLVM). Cava memiliki sintaksis mirip Java dan performa setara dengan C++. Bahasa ini mendukung kompilasi just-in-time (JIT) dan pemeriksaan keamanan untuk memastikan program yang kuat. Anda dapat menggunakan Cava dan pustaka Cava yang disediakan oleh OpenSearch untuk merancang plug-in pengurutan khusus. Plug-in berbasis Cava menawarkan manfaat berikut dibandingkan dengan ekspresi bawaan:

  • Desain kustom lebih fleksibel: Cava memungkinkan Anda menyesuaikan plug-in menggunakan sintaksis yang lebih beragam, seperti loop for dan definisi fungsi serta kelas sesuai kebutuhan bisnis.

  • Lebih mudah dipelihara: Plug-in berbasis Cava lebih mudah dibaca dan dipelihara dibandingkan dengan ekspresi.

  • Lebih mudah dipelajari: Sintaksis Cava mirip dengan Java. Jika Anda sudah familiar dengan Java, Anda dapat dengan mudah memahami dan menggunakan Cava untuk pengembangan, mengurangi biaya pembelajaran.

Catatan: Plug-in berbasis Cava hanya dapat digunakan dalam aplikasi eksklusif.

Prosedur

Contoh berikut menunjukkan cara mengonfigurasi kebijakan pengurutan kasar dan pengurutan halus menggunakan fungsi pengurutan berbasis relevansi teks:

1. Buat kebijakan pengurutan kasar: Masuk ke konsol OpenSearch. Di panel navigasi sebelah kiri, pilih Pusat Algoritma Pencarian > Konfigurasi Pengurutan. Di halaman Manajemen Kebijakan, klik Buat. Di halaman Buat Kebijakan, masukkan nama kebijakan, atur parameter Ruang Lingkup ke Pengurutan Kasar, dan parameter Jenis ke Ekspresi. Lalu, klik Selanjutnya.

55552

Di langkah Konfigurasi Pengurutan, pilih static_bm25 dari daftar drop-down Karakteristik Penilaian, dan atur Bobot ke 10. Jika bobot diatur ke 10, skor dikalikan dengan 10 dalam perhitungan.

3

Anda juga dapat menentukan bidang pencarian dan mengatur bobot. Bidang yang ditentukan harus berupa bidang atribut, dan hanya bidang numerik yang didukung, seperti bidang tipe INT, DOUBLE, dan FLOAT. Skor dari nilai bidang dikalikan dengan bobot juga ditambahkan ke skor.

Setelah konfigurasi selesai, klik Kembali untuk kembali ke halaman Manajemen Kebijakan.

4

2. Buat kebijakan pengurutan halus: Masuk ke konsol OpenSearch. Di panel navigasi sebelah kiri, pilih Pusat Algoritma Pencarian > Konfigurasi Pengurutan. Di halaman Manajemen Kebijakan, klik Buat. Di halaman Buat Kebijakan, tentukan nama kebijakan, atur parameter Ruang Lingkup ke Pengurutan Halus, dan parameter Jenis ke Ekspresi. Lalu, klik Selanjutnya.

55556

Di langkah Konfigurasi Pengurutan, pilih text_relevance (field_name) dari daftar drop-down Fungsi Bawaan, masukkan nama bidang yang akan dicari dalam tanda kurung, lalu klik Selesai.

7

Setelah konfigurasi selesai, klik Kembali untuk kembali ke halaman Manajemen Kebijakan.

image

3. Lihat hasil pengurutan: Di halaman Uji Pencarian, atur bidang untuk pengurutan kasar dan pengurutan halus dan aktifkan Tampilkan Detail Pengurutan.

9

Gambar berikut menunjukkan skor yang dihitung untuk setiap fungsi.

10

Catatan

Dokumen diurutkan secara kasar lalu diurutkan secara halus berdasarkan skor. Dokumen yang diambil melalui kueri dan difilter masuk ke tahap pengurutan kasar, di mana N dokumen berkualitas tinggi teratas dipilih berdasarkan skor yang dihitung menggunakan ekspresi pengurutan kasar. Kemudian, ekspresi pengurutan halus digunakan untuk mengembalikan dokumen yang paling sesuai dengan kebutuhan pengguna. Skor dihitung sebagai berikut:

  • Jika hanya kebijakan pengurutan kasar yang dikonfigurasi, skor dokumen sama dengan 10.000 ditambah hasil yang dihitung menggunakan ekspresi pengurutan kasar. Skor maksimum dokumen adalah 20.000. Jika skor melebihi 20.000, skor yang ditampilkan tetap 20.000.

  • Jika hanya kebijakan pengurutan halus yang dikonfigurasi, skor dokumen sama dengan 10.000 ditambah hasil yang dihitung menggunakan ekspresi pengurutan halus. Tidak ada batas atas untuk skor dokumen.

  • Jika kedua kebijakan pengurutan dikonfigurasi, skor akhir dokumen yang masuk ke tahap pengurutan halus sama dengan 10.000 ditambah hasil yang dihitung menggunakan ekspresi pengurutan halus, sedangkan skor akhir dokumen lain yang hanya diurutkan secara kasar sama dengan 10.000 ditambah hasil yang dihitung menggunakan ekspresi pengurutan kasar. Skor akhir maksimum adalah 20.000. Jika skor melebihi 20.000, skor yang ditampilkan tetap 20.000.

  • Anda dapat membuat beberapa aturan pengurutan kasar dan halus. Namun, hanya satu aturan pengurutan kasar dan satu aturan pengurutan halus yang dapat digunakan dalam sebuah kueri.

Penting
  • Hanya satu nama kebijakan pengurutan kasar yang dapat ditentukan dalam first_rank_name. Beberapa ekspresi pengurutan kasar tidak dapat digunakan secara bersamaan.

  • Hanya satu nama kebijakan pengurutan halus yang dapat ditentukan dalam second_rank_name. Beberapa ekspresi pengurutan halus tidak dapat digunakan secara bersamaan.

Konfigurasi SDK

SDK untuk Java:

// Tentukan ekspresi pengurutan kasar dan ekspresi pengurutan halus. Dalam contoh ini, ekspresi default digunakan.
Rank rank =newRank();
rank.setFirstRankName("default");// Nama kebijakan pengurutan kasar
rank.setSecondRankName("default");// Nama kebijakan pengurutan halus
rank.setReRankSize(5);// Tentukan jumlah dokumen yang akan diurutkan berdasarkan ekspresi pengurutan halus.

SDK untuk PHP:

// Tentukan ekspresi pengurutan kasar.
$params->setFirstRankName('default');
// Tentukan ekspresi pengurutan halus.
$params->setSecondRankName('default');

Catatan Penggunaan

  • Ekspresi pengurutan kasar dan halus yang ditentukan dalam kode memiliki prioritas lebih tinggi daripada ekspresi default yang dikonfigurasi di konsol OpenSearch.

  • Anda dapat melihat detail pengurutan dokumen dengan menambahkan parameter ke kode Anda.

    Metode: Tambahkan parameter format:fulljson ke klausa config.

    Dalam hasil yang dikembalikan, parameter sortExprValues menunjukkan informasi pengurutan dokumen.

    image.png

    Nilai parameter sortExprValues adalah array yang berisi nilai bidang pengurutan dalam klausa pengurutan. Contoh:

    sort=-price;-RANK

    Dalam hal ini, nilai parameter sortExprValues berformat [price, skor dokumen].

    Jika klausa pengurutan tidak dikonfigurasi, nilai parameter sortExprValues adalah skor dokumen secara default.