Metode analisis, metode pencocokan, perhitungan skor berbasis 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 dan langkah-langkah yang dapat diambil untuk mencapai peningkatan lebih lanjut.
Dalam kebanyakan kasus, Anda mungkin menggunakan metode berikut untuk melakukan pencarian:
Gunakan klausa LIKE untuk menanyakan database dalam mode pencocokan inklusif.
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 adalah kunci tetapi juga merupakan tantangan utama bagi mesin pencari. Istilah-istilah ini kemudian digabungkan dan digunakan untuk mencocokkan dokumen 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 berbasis relevansi.
Berikut ini menjelaskan bagaimana faktor-faktor ini berfungsi dan tampil di OpenSearch.
Bagian berikut menjelaskan secara rinci dampak terhadap performa pencarian dan skenario dari setiap faktor sebagai referensi Anda.
Metode analisis
Sebelum memulai dengan topik ini, pastikan Anda sudah familiar dengan berbagai metode analisis. Untuk informasi lebih lanjut, lihat Built-in analyzers.
Metode pencocokan
Cara Kerjanya
Setelah kueri pencarian dianalisis menjadi beberapa istilah, penggunaan istilah-istilah ini untuk mengambil dokumen melibatkan metode pencocokan yang digunakan. Secara default, OpenSearch mencari dokumen berdasarkan hubungan logis AND. Hanya dokumen yang berisi semua istilah hasil analisis yang dapat dikembalikan. Ini spesifik untuk satu kueri pencarian tunggal. OpenSearch mendukung berbagai metode pencocokan. Sebagai contoh, Anda dapat menggunakan operator logis seperti AND, OR, RANK, ANDNOT, dan () untuk mencocokkan hasil. Operator logis ini diurutkan dalam urutan prioritas menurun berikut: () > ANDNOT > AND > OR > RANK.
Contoh
Operator logis | Sintaksis | Deskripsi |
query=title:"Apple Mobile phone" | Cari dokumen di mana judul berisi Apple dan Mobile phone. | |
AND | query=title:'Apple' AND cate:'Mobile phone' | Cari dokumen di mana judul berisi Apple dan nilai bidang cate berisi Mobile phone. Operator AND mengembalikan irisan dari hasil kueri. |
OR | query=title:'Apple' OR cate:'Mobile phone' | Cari dokumen di mana judul berisi Apple atau nilai bidang cate berisi Mobile phone. Operator OR mengembalikan gabungan dari hasil kueri. |
RANK | query=title:'Apple' RANK cate:'Mobile phone' | Cari dokumen di mana judul berisi Apple. Dokumen di mana nilai bidang cate berisi Mobile phone diberi poin tambahan. |
ANDNOT | query=title:'Apple' ANDNOT cate:'Mobile phone' | Cari dokumen di mana judul berisi Apple dan nilai bidang cate tidak berisi Mobile phone. |
FAQ
Pertanyaan: Dokumen saya berisi "Eat the Meal", dan dokumen tersebut dikembalikan jika saya mencari "Eat" atau "Eat the Meal". Mengapa dokumen saya tidak dikembalikan jika saya mencari "You Eat the Meal"?
Jawaban: Di OpenSearch, hanya dokumen yang berisi semua istilah hasil analisis yang dapat dikembalikan. Dokumen Anda tidak berisi istilah "You". Oleh karena itu, dokumen Anda tidak dikembalikan jika Anda mencari "You Eat the Meal". Untuk menyelesaikan masalah ini, lakukan analisis kueri.
Pertanyaan: Apa yang harus saya lakukan jika saya ingin mencari dokumen yang dimulai dengan istilah tertentu seperti KFC? Jawaban: OpenSearch tidak memungkinkan Anda untuk mengambil dokumen berdasarkan istilah pada posisi tertentu.
Perhitungan skor berbasis relevansi
Bagian sebelumnya menjelaskan metode yang digunakan untuk mengambil dokumen. Setelah dokumen diambil, pengurutan dokumen melibatkan relevansi. 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 berbasis relevansi di OpenSearch. Anda dapat menggunakan RANK dalam ekspresi pengurutan kasar atau ekspresi pengurutan halus.
Cara Kerjanya
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.
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, yang menentukan apakah dokumen berkualitas tinggi dapat masuk ke proses pengurutan halus dan akhirnya dikembalikan. Dengan demikian, 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.
Ekspresi Pengurutan Halus: Setelah N dokumen berkualitas tinggi teratas diambil menggunakan ekspresi pengurutan kasar, Anda dapat menggunakan ekspresi pengurutan halus untuk mengurutkan dokumen ini secara halus. Ekspresi pengurutan halus mendukung operasi matematika dan 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 skor 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. |
FAQ
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.
Pertanyaan: Mengapa kesalahan 2112 dilaporkan? Jawaban: Bidang yang ditentukan dalam klausa kueri harus sama dengan yang ada di rumus. Sebagai contoh, klausa kueri query=default:'keyword' berisi bidang title dan body. Namun, rumus text_relevance(title)+text_relevance(author) berisi bidang title dan author, di mana bidang author tidak termasuk dalam klausa kueri. Dalam hal ini, kesalahan 2112 dilaporkan.
Tips
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. Hal ini menghemat sejumlah besar perhitungan dan meningkatkan performa pencarian.
Anda dapat menggunakan fungsi tag_match untuk melakukan operasi multi-dimensi pada fitur dalam klausa kueri dan dokumen. Fungsi ini dapat digunakan secara luas dalam E-commerce. Jika Anda memiliki kebutuhan serupa, coba gunakan fungsi ini.
OpenSearch menyediakan banyak fungsi dan fitur, yang merupakan bantuan besar jika layanan digunakan dengan benar.
Relevansi adalah kombinasi dari banyak faktor. Anda dapat menyesuaikan bobot setiap faktor untuk memenuhi persyaratan performa pencarian.