全部产品
Search
文档中心

OpenSearch:Lakukan pencarian berdasarkan relevansi

更新时间:Jan 28, 2026

Metode analisis, metode pencocokan, perhitungan skor berdasarkan relevansi, dan ekspresi pengurutan

Topik ini menjelaskan secara rinci mengapa hasil pencarian aktual dan yang diharapkan mungkin tidak konsisten dalam skenario tertentu. Topik ini juga menjelaskan bagaimana OpenSearch meningkatkan performa pencarian serta langkah-langkah yang dapat diambil untuk mencapai peningkatan lebih lanjut.

Dalam kebanyakan kasus, Anda dapat menggunakan metode berikut untuk melakukan pencarian:

  1. Gunakan klausa LIKE untuk menanyakan database dalam mode pencocokan inklusif.

  2. Gunakan mesin pencari seperti Baidu dan Google. Setelah memasukkan kueri pencarian di mesin pencari, kueri tersebut dianalisis menjadi beberapa istilah berdasarkan makna semantiknya. Proses analisis merupakan titik kunci tetapi sulit yang dihadapi oleh mesin pencari. Istilah-istilah ini kemudian digabungkan dan digunakan untuk mencocokkan dokumen yang relevan. Dokumen-dokumen tersebut dinilai, diurutkan berdasarkan skornya, dan dikembalikan kepada pengguna.

OpenSearch bekerja dengan cara yang sama seperti mesin pencari. Performa pencarian OpenSearch dipengaruhi oleh faktor-faktor berikut: metode analisis, metode pencocokan, dan perhitungan skor berdasarkan relevansi.

Berikut ini menjelaskan bagaimana faktor-faktor ini berfungsi dan berperforma di OpenSearch.

Pada bagian-bagian berikut, dampak pada performa pencarian dan skenario dari setiap faktor dijelaskan secara rinci untuk referensi Anda.

Metode analisis

Sebelum memulai dengan topik ini, pastikan Anda sudah familiar dengan berbagai metode analisis. Untuk informasi lebih lanjut, lihat Penganalisis Teks.

Metode pencocokan

Cara Kerjanya

Setelah kueri pencarian dianalisis menjadi beberapa term, metode pencocokan digunakan untuk mengambil dokumen. Secara default, OpenSearch menerapkan hubungan logika AND, sehingga hanya dokumen yang berisi semua term hasil analisis yang akan dikembalikan—berlaku untuk satu kueri pencarian tunggal. OpenSearch mendukung berbagai metode pencocokan. Misalnya, Anda dapat menggunakan operator logika seperti AND, OR, RANK, ANDNOT, dan () untuk mencocokkan hasil. Operator logika tersebut diurutkan berdasarkan prioritas menurun sebagai berikut: (), ANDNOT, AND, OR, RANK.

Contoh

Operator logika

Sintaksis

Deskripsi

-

query=title:"Apple Mobile phone"

Mengambil dokumen yang judulnya berisi Apple dan Mobile phone.

AND

query=title:'Apple' AND cate:'Mobile phone'

Mengambil dokumen yang judulnya berisi Apple dan nilai bidang cate-nya berisi Mobile phone. Operator AND mengembalikan irisan dari hasil kueri.

OR

query=title:'Apple' OR cate:'Mobile phone'

Mengambil dokumen yang judulnya berisi Apple atau nilai bidang cate-nya berisi Mobile phone. Operator OR mengembalikan gabungan dari hasil kueri.

RANK

query=title:'Apple' RANK cate:'Mobile phone'

Mengambil dokumen yang judulnya berisi Apple. Dokumen yang nilai bidang cate-nya berisi Mobile phone diberikan poin tambahan.

ANDNOT

query=title:'Apple' ANDNOT cate:'Mobile phone'

Mengambil dokumen yang judulnya berisi Apple dan nilai bidang cate-nya tidak berisi Mobile phone.

FAQ

  1. Pertanyaan: Apa yang harus saya lakukan jika ingin mencari dokumen yang dimulai dengan istilah tertentu seperti KFC? Jawaban: OpenSearch tidak mengizinkan Anda mengambil dokumen berdasarkan istilah di posisi tertentu.

Perhitungan skor berdasarkan relevansi

Bagian sebelumnya menjelaskan metode yang digunakan untuk mengambil dokumen. Setelah dokumen diambil, relevansi digunakan untuk mengurutkan dokumen-dokumen tersebut. OpenSearch memungkinkan Anda menggunakan klausa sortir untuk menyesuaikan konfigurasi pengurutan. Jika Anda tidak menentukan klausa sortir, sort=-RANK digunakan secara default. Anda dapat menggunakan klausa sortir untuk mengurutkan dokumen dari berbagai dimensi atau dalam urutan menaik atau menurun. Sebagai contoh, jika Anda menggunakan sort=-RANK;+bonus, dokumen pertama kali diurutkan berdasarkan relevansi dalam urutan menurun. Kemudian, dokumen dengan skor yang sama diurutkan berdasarkan bonus dalam urutan menaik. Bagian ini berfokus pada cara menggunakan RANK untuk mengimplementasikan perhitungan skor berdasarkan relevansi di OpenSearch. Anda dapat menggunakan RANK dalam ekspresi pengurutan kasar atau ekspresi pengurutan halus.

Cara kerja

Di OpenSearch, dokumen pertama kali dinilai berdasarkan ekspresi pengurutan kasar. Jumlah dokumen yang terlibat dalam proses pengurutan kasar sama dengan nilai parameter rank_size, yaitu satu juta. Kemudian, N dokumen dengan skor tertinggi dinilai dan diurutkan berdasarkan ekspresi pengurutan halus. Ratusan dokumen terlibat dalam proses pengurutan halus. Setelah pengurutan halus, dokumen dikembalikan berdasarkan nilai parameter start dan hit. Jika jumlah dokumen yang akan dikembalikan lebih besar dari N, dokumen sisanya setelah N dokumen dikembalikan berdasarkan skor yang diperoleh dalam proses pengurutan kasar.

  1. Ekspresi Pengurutan Kasar: Prinsip kerja yang dijelaskan dalam paragraf sebelumnya menunjukkan bahwa proses pengurutan kasar sangat mempengaruhi performa pencarian, seperti latensi. Proses pengurutan kasar sangat penting karena menentukan apakah dokumen berkualitas tinggi dapat masuk ke proses pengurutan halus dan akhirnya dikembalikan. Mengingat hal ini, pengurutan kasar yang sederhana namun efisien lebih disukai. OpenSearch memungkinkan Anda melakukan pengurutan kasar berdasarkan beberapa indeks maju sederhana atau fungsi static_bm25 atau timeliness.

  2. Ekspresi Pengurutan Halus: Setelah N dokumen berkualitas tinggi teratas diambil menggunakan ekspresi pengurutan kasar, Anda dapat menggunakan ekspresi pengurutan halus untuk mengurutkan dokumen-dokumen ini secara halus. Ekspresi pengurutan halus mendukung operasi matematika dan operasi logika. Selain itu, OpenSearch menyediakan banyak fungsi dan fitur untuk skenario tipikal seperti skenario online to offline (O2O). Hal ini memenuhi persyaratan untuk mengurutkan dokumen berdasarkan relevansi.

OpenSearch juga menyediakan skema aplikasi bawaan dan ekspresi pengurutan untuk referensi dan penggunaan Anda dalam berbagai skenario.

Contoh

Skenario

Ekspresi

Deskripsi

Forum: Pengurutan kasar

static_bm25()

Menghitung skor teks secara kasar.

Forum: Pengurutan halus

text_relevance(title)*3+text_relevance(body)

+

if(text_relevance(title)>0.07,timeliness(create_timestamp),timeliness(create_timestamp)*0.5)

+

(topped+special+atan(hits)*0.5+atan(replies))*0.1

Menghitung skor teks,

,

skor ketepatan waktu,

,

dan puluhan atribut lainnya.

O2O: Pengurutan kasar

sold_score+general_score*2

Menghitung skor volume penjualan dan skor toko komprehensif secara offline.

O2O: Pengurutan halus

2*sold_score+0.5*reward

-

10*distance(lon,lat,u_posx,u_posy)

+

if ((flags&2) =2, 2, 0)+if(is_open=5,10,0)

+

special_score

Menghitung skor volume penjualan, kecepatan pengiriman, laju ketepatan waktu,

,

jarak,

,

status sibuk, status operasi,

,

dan intervensi manusia.

Fiksi: Pengurutan kasar

static_bm25()*0.7+hh_hot*0.00003

Menghitung skor teks dan skor popularitas.

Fiksi: Pengurutan halus

pow(min(0.5,max(text_relevance(category),max(text_relevance(title), text_relevance(author)))),2)

+

general_score*2

+

1.5*(1/(1+pow(2.718281,-((log10(hh_hot)-2)*2-5)))))

Menghitung skor relevansi klasifikasi, relevansi judul, relevansi penulis,

,

kualitas novel,

,

dan popularitas.

E-commerce: Pengurutan kasar

static_bm25()+general_score*2+timeliness(end_time)

Menghitung skor teks, skor komoditas komprehensif, dan skor waktu kedaluwarsa.

E-commerce: Pengurutan halus

text_relevance(title)*3+text_relevance(category)

+

general_score*2+boughtScore*2

+

tag_match(ctr_query_value,doc_value,mul,sum,false,true)+..

Menghitung skor relevansi teks, relevansi kategori,

,

popularitas, peringkat penjual,

,

estimasi click-through rate (CTR), dan aturan fitur.

  1. Pertanyaan: Mengapa bidang seller_id dalam ekspresi pengurutan halus text_relevance(seller_id) tidak dapat ditemukan? Jawaban: Ekspresi text_relevance() hanya mendukung bidang bertipe TEXT dan SHORT_TEXT.

  2. Pertanyaan: Mengapa muncul error 2112? Jawaban: Bidang yang ditentukan dalam klausa query harus sama dengan yang digunakan dalam formula. Misalnya, klausa query query=default:'keyword' mencakup bidang title dan body, sedangkan formula text_relevance(title)+text_relevance(author) menggunakan bidang title dan author—di mana author tidak termasuk dalam klausa query. Dalam kasus ini, error 2112 dilaporkan.

Tips

  1. Setelah dokumen diambil, ekspresi pengurutan digunakan untuk memberi skor setiap dokumen. Skor yang tidak relevan dengan pencarian dapat dihitung secara offline terlebih dahulu, dan bidang general_score dapat ditambahkan untuk menyimpan skor offline. Dengan cara ini, dokumen dapat diurutkan berdasarkan bidang general_score. Ini menghemat sejumlah besar perhitungan dan meningkatkan performa pencarian.

  2. Anda dapat menggunakan fungsi tag_match untuk melakukan operasi multidimensi pada fitur-fitur dalam klausa query dan dokumen. Fungsi ini sangat berguna dalam skenario e-dagang.

  3. OpenSearch menyediakan berbagai fungsi dan fitur untuk memberikan fleksibilitas lebih besar.

  4. Relevansi ditentukan oleh banyak faktor. Anda dapat menyesuaikan bobot masing-masing faktor berdasarkan performa pencarian dan pengurutan untuk menghasilkan hasil optimal.