Perluasan kueri

Perluasan kueri adalah pelonggaran bertahap batasan kueri untuk menyertakan lebih banyak hasil jika tidak ada atau terlalu sedikit hasil yang ditemukan pada awalnya. Hal ini menyebabkan penyesuaian ukuran hasil per kueri.

Jika tidak ada dokumen yang relevan untuk kueri, perluasan kueri akan menampilkan dokumen yang kurang relevan untuk memastikan kueri tidak menampilkan nol hasil penelusuran.

Tidak seperti pengelompokan dinamis atau kontrol penayangan, misalnya, perluasan kueri tidak dapat dikonfigurasi langsung di konsol Google Cloud . Sebagai gantinya, Anda harus mengonfigurasi perluasan kueri secara terprogram untuk setiap permintaan penelusuran. Baca lebih lanjut untuk mengetahui cara mengonfigurasi perluasan kueri di API.

Tutorial perluasan kueri

Tutorial ini menunjukkan cara mengaktifkan fitur perluasan kueri. Saat menggunakan frasa penelusuran yang ambigu atau terdiri dari beberapa kata, pembeli dapat memperoleh respons kosong. Setelah mengaktifkan perluasan kueri, permintaan akan dianalisis dan daftar produk yang diperluas berdasarkan kueri penelusuran yang diuraikan akan ditampilkan.


Untuk mengikuti panduan langkah demi langkah tugas ini langsung di Cloud Shell Editor, klik Pandu saya:

Pandu saya


Ringkasan perluasan kueri

Perluasan kueri adalah fitur canggih yang dirancang untuk meningkatkan perolehan penelusuran dan mencegah skenario tanpa hasil, terutama untuk kueri pengguna yang panjang atau kompleks.

Alih-alih tidak menampilkan hasil saat kecocokan persis tidak ditemukan di katalog produk, perluasan kueri mengidentifikasi dan menampilkan produk terkait atau alternatif. Hal ini meningkatkan kualitas pengalaman pengguna dan dapat meningkatkan rasio konversi.

Kasus penggunaan utama untuk perluasan kueri adalah:

  • Kueri long-tail: Untuk penelusuran yang sangat spesifik, seperti susu organik rendah lemak tinggi protein untuk penderita diabetes, katalog mungkin tidak memiliki kecocokan yang sempurna. Perluasan kueri dapat menampilkan produk yang cocok dengan sebagian maksud, seperti produk yang diberi tag dengan atribut atau nilai atribut susu yang cocok untuk penderita diabetes, susu berprotein tinggi.
  • Produk alternatif: Jika pengguna menelusuri merek atau produk yang tidak ada dalam katalog, seperti kopi Starbucks 100 ml, perluasan kueri dapat menyarankan merek kopi alternatif yang tersedia untuk dibeli, sehingga mencegah penelusuran yang tidak menghasilkan apa pun.

Bagian berikutnya menguraikan fungsionalitas, mekanisme pemicu, dan nuansa konfigurasi fitur perluasan kueri di Vertex AI Search untuk e-commerce, dengan fokus khusus pada peran penting filter kanonis.

Mekanisme pemicu perluasan kueri

Keputusan untuk mengaktifkan perluasan kueri atau kueri penelusuran tertentu dilakukan secara otomatis dan berdasarkan aturan filter kanonis yang dapat dikonfigurasi dengan cepat.

  • Kondisi pemicu: Perluasan kueri dipicu hanya jika penelusuran awal dengan kueri filter kanonis menghasilkan kurang dari 3 hasil produk.
  • Nilai minimum: Nilai minimum 3 ini dapat diubah secara default. Fitur ini berfungsi dengan baik untuk sebagian besar kasus penggunaan e-commerce, memastikan bahwa perluasan kueri diaktifkan hanya jika dan saat set hasil awal benar-benar jarang.

Mengonfigurasi perluasan kueri di API

Perluasan kueri dikonfigurasi secara terprogram per permintaan menggunakan API sebagai berikut:

  • Konfigurasi API: Anda mengontrol perluasan kueri dengan menyertakan objek queryExpansionSpec dalam SearchRequest.

  • Setelan: Dalam queryExpansionSpec, Anda menetapkan kolom condition ke AUTO untuk mengaktifkan fitur atau DISABLED untuk menonaktifkannya, yang merupakan default jika tidak ditentukan.

  • Penyematan: Anda dapat secara opsional menyetel pinUnexpandedResults ke true dalam permintaan untuk memastikan bahwa kecocokan persis untuk kueri asli muncul di bagian atas hasil penelusuran, diikuti dengan hasil yang diperluas. Untuk mengetahui informasi selengkapnya, baca halaman penyematan.

Mengonfigurasi filter kanonis

Agar perluasan kueri dipicu secara efektif, Anda harus mengonfigurasi canonical_filter dengan benar dalam permintaan penelusuran Anda.

Untuk menerapkan perluasan kueri dengan benar, Anda harus memahami dua parameter filter utama dalam permintaan penelusuran, yaitu filter tingkat teratas dan filter kanonis.

  • Filter tingkat teratas (filter): Ini adalah filter utama yang diterapkan ke hasil penelusuran sebelum ditampilkan kepada pengguna. Ini adalah kombinasi dari dua kemungkinan lapisan:

    • Filter bisnis/dasar: Aturan yang telah ditentukan sebelumnya yang diterapkan ke semua penelusuran, sering kali tanpa input langsung pengguna, seperti inStock=TRUE, category="groceries", storeId="XYZ".

    • Filter aspek yang dipilih pengguna: Filter yang diterapkan secara dinamis oleh pengguna saat berinteraksi dengan antarmuka penelusuran, seperti dengan memilih filter aspek untuk brand="Adidas", size="L".

  • Filter kanonis (canonical_filter): Ini adalah filter khusus yang digunakan secara eksklusif oleh modul keputusan perluasan kueri. Satu-satunya tugasnya adalah menentukan tampilan katalog yang digunakan untuk mengevaluasi kondisi pemicu perluasan kueri (kurang dari lima hasil).

Fungsi filter kanonis inti

Filter kanonis dirancang untuk membedakan antara hasil penelusuran organik yang buruk dan kumpulan hasil yang sengaja dipersempit oleh pengguna.

Skenario 1

  • Perjalanan pengguna: Pengguna menelusuri kaus dan mendapatkan ribuan hasil. Ada business_filter default, sehingga, misalnya, hanya memfilter produk yang tersedia dan produk yang cocok dengan atribut tingkat toko kustom. Kemudian, pengguna menerapkan filter aspek untuk brand="Adidas" dan size="L", yang mengurangi jumlah hasil menjadi dua.
  • Jika canonical_filter sama dengan filter: Sistem keputusan perluasan kueri hanya akan melihat 2 hasil dan memicu perluasan kueri secara tidak benar, yang menampilkan produk terkait tetapi tidak relevan, seperti kaus Nike, yang tidak menghargai pemfilteran eksplisit pengguna.
  • Setelan yang benar adalah canonical_filter = business filter: Keputusan perluasan kueri harus dibuat berdasarkan kueri awal, tidak termasuk aspek yang dipilih pengguna.

Skenario 2

  • Perjalanan pengguna: Pengguna menelusuri kaus adidas dengan cetakan grafis hitam dan hanya menghasilkan satu atau dua hasil, jika ada. Ada business_filter default sehingga, misalnya, hanya memfilter produk yang tersedia dan produk yang cocok dengan atribut tingkat toko kustom.
  • Jika canonical_filter tidak ditetapkan atau dikonfigurasi dengan benar, penelusuran dengan filter kanonis dapat menemukan produk yang cocok dengan kueri, tetapi kehabisan stok atau dari toko lain, yang berarti nilai atribut tingkat toko kustom yang berbeda. Dalam hal ini, perluasan kueri tidak dipicu.
  • Setelan yang benar adalah canonical_filter = business filter. Keputusan perluasan kueri akan menemukan kurang dari tiga produk untuk kueri panjang tertentu, lalu akan memicu perluasan kueri dan menampilkan produk terkait ke kueri asli, yang berarti produk yang tersedia dan cocok dengan atribut tingkat toko. Dengan demikian, hasil penelusuran akan diperluas untuk menyertakan t-shirt dengan sablon grafis hitam dari merek lain, t-shirt dengan sablon grafis berwarna lain, atau produk t-shirt lain dari merek dalam kueri.

Praktik terbaik perluasan kueri

Filter kanonis hampir selalu harus ditetapkan agar identik dengan filter bisnis atau dasar Anda. Hal ini memastikan bahwa modul perluasan kueri mengevaluasi potensi kueri terhadap tampilan katalog luas yang sama yang awalnya dilihat pengguna sebelum mereka mulai menerapkan aspek.

Alur proses penelusuran dan perluasan kueri menyeluruh

Saat permintaan penelusuran dibuat, beberapa proses paralel terjadi:

  • Permintaan diterima: API menerima permintaan penelusuran yang berisi kueri, filter utama, dan canonical_filter.

  • Penelusuran keputusan perluasan kueri: Secara paralel, modul keputusan perluasan kueri melakukan penelusuran internalnya sendiri menggunakan kueri yang digabungkan dengan filter kanonis.

  • Pemeriksaan jumlah hasil: Modul ini memeriksa jumlah produk yang ditampilkan dari penelusuran internalnya.

    • Jika hasilnya lima atau lebih: Perluasan kueri tidak dipicu. Hasil penelusuran standar akan dilanjutkan ke langkah pemfilteran akhir.
    • Jika hasil kurang dari lima: Perluasan kueri dipicu. Model secara sistematis melonggarkan kueri untuk menemukan produk terkait. Misalnya, model dapat menemukan ponsel Pixel 5, ponsel Pixel 4, earbud Pixel, atau bahkan ponsel Samsung.
  1. Pemfilteran akhir: Kumpulan produk (kumpulan asli atau kumpulan yang diperluas dari perluasan kueri) diteruskan ke tahap akhir. Dalam hal ini, filter tingkat atas, yang berisi aturan bisnis dan aspek yang dipilih pengguna, diterapkan secara ketat.
  • Respons dikirim: Daftar produk yang difilter terakhir ditampilkan dalam respons API.

Kasus penggunaan lanjutan aktivasi selektif perluasan kueri

Anda dapat mengonfigurasi filter secara strategis untuk mengaktifkan atau menonaktifkan perluasan kueri untuk bagian tertentu dari katalog Anda.

Pertimbangkan skenario katalog besar yang berisi bahan makanan, elektronik, dan pakaian. Untuk skenario seperti itu, Anda harus mempertimbangkan aspek-aspek berikut.

Sasaran

Aktifkan perluasan kueri untuk kueri bahan makanan yang sulit ditemukan atau langka, tetapi tampilkan nol hasil untuk item elektronik atau fashion. Kebutuhan bisnis di sini adalah hanya mengaktifkan perluasan kueri secara selektif pada bagian bahan makanan.

Konfigurasi

Untuk skenario kasus penggunaan ini, perluasan kueri selektif dapat dikonfigurasi sebagai berikut:

  • canonical_filter: Tetapkan ke broad. Aturan ini harus mencakup semua kategori: Bahan makanan, elektronik, dan mode, serta aturan dasar seperti ketersediaan stok, yang menentukan filter kanonis dengan category="groceries" OR category="electronics" OR category="fashion") AND inStock=TRUE)
  • filter: Setel ke sempit, berdasarkan konteks pengguna. Untuk pengguna di bagian bahan makanan, filternya adalah category="groceries" AND inStock=TRUE.

Cara kerjanya

Perluasan kueri selektif berfungsi dalam skenario ini sebagai berikut:

  • Pengguna menelusuri "iPhone 20": Modul perluasan kueri menggunakan canonical_filter yang luas, menemukan model iPhone yang ada (< 5 hasil), dan memutuskan untuk tidak memicu perluasan kueri. Hasil penelusuran standar (iPhone yang ada) kemudian diteruskan ke filter utama, yang memblokirnya karena category="electronics" tidak cocok dengan category="groceries". Pengguna melihat nol hasil dengan benar.
  • Pengguna menelusuri *susu diabetes tinggi protein:* Modul perluasan kueri menggunakan canonical_filter luas dan menemukan <5 hasil, sehingga memicu perluasan kueri dengan menemukan produk susu terkait. Produk ini diteruskan ke filter utama. Karena cocok dengan category="groceries", produk ini berhasil dikembalikan kepada pengguna.

Dengan memanipulasi cakupan canonical_filter (tampilan pengambilan keputusan) dan filter utama (tampilan output akhir), Anda mendapatkan kontrol yang tepat atas pengalaman penelusuran.

Contoh set data

Halaman ini menggunakan set data berikut sebagai contoh. Luaskan untuk melihat kolom dalam set data deskripsi produk contoh.

Contoh set data produk

ID title merek kategori price_info.price
"nest_mini_2nd_gen" "Nest Mini (generasi ke-2)" ["Google", "Nest"] ["Nest > speaker dan layar"] 49,00
"nest_audio" "Nest Audio" ["Google", "Nest"] ["Nest > speaker dan layar"] 99,99
"nest_hub_max" "Nest Hub Max" ["Google", "Nest"] ["Nest > speaker dan layar"] 229,00
"nest_hub" "Nest Hub" ["Google", "Nest"] ["Nest > speaker dan layar"] 88,99
"google_home_max" "Google Home Max" ["Google", "Nest"] ["Nest > speaker dan layar"] 299.00
"google_home_mini" "Google Home Mini" ["Google", "Nest"] ["Nest > speaker dan layar"] 49,00
"google_pixel_5" "Google Pixel 5" ["Google", "Pixel"] ["Pixel > ponsel"] 699,00
"google_pixel_4a_with_5g" "Google Pixel 4a dengan 5G" ["Google", "Pixel"] ["Pixel > ponsel"] 499.00
"google_pixel_4a" "Ponsel Google Pixel 4a" ["Google", "Pixel"] ["Pixel > ponsel"] 349.00
"google_pixel_stand" "Google Pixel Stand" ["Google", "Pixel"] ["Pixel > aksesori unggulan"] 79,00
"google_pixel_buds" "Google Pixel Buds" ["Google", "Pixel"] ["Pixel > aksesori unggulan"] 179,00
"google_pixel_5_case" "Casing Google Pixel 5" ["Google", "Pixel"] ["Pixel > aksesori unggulan"] 40.00
"google_pixel_4a_5g_case" "Casing Google Pixel 4a (5G)" ["Google", "Pixel"] ["Pixel > aksesori unggulan"] 40.00
"google_pixel_4a_case" "Casing Google Pixel 4a" ["Google", "Pixel"] ["Pixel > aksesori unggulan"] 40.00

Perluasan kueri

Perluasan kueri meningkatkan perolehan untuk istilah kueri dengan sedikit hasil, terutama kueri long tail.

Fitur penelusuran ini didukung oleh spesifikasi yang menentukan kondisi perluasan kueri. Fitur ini mencakup opsi pinUnexpandedResults yang dinonaktifkan secara default. Jika disetel ke true, produk yang tidak diperluas akan ditampilkan di bagian atas hasil penelusuran. Bagian atas diikuti dengan hasil yang diperluas.

Java

import com.google.cloud.retail.v2.SearchRequest;
import com.google.cloud.retail.v2.SearchRequest.QueryExpansionSpec;
import com.google.cloud.retail.v2.SearchRequest.QueryExpansionSpec.Condition;
import com.google.cloud.retail.v2.SearchResponse;
import com.google.cloud.retail.v2.SearchServiceClient;

public static void searchProductsWithQueryExpansion(String query, int pageSize,
    Condition condition) throws IOException, InterruptedException {
  QueryExpansionSpec queryExpansionSpec = QueryExpansionSpec.newBuilder()
      .setCondition(condition)
      .build();

  SearchRequest searchRequest = SearchRequest.newBuilder()
      .setPlacement(DEFAULT_SEARCH_PLACEMENT_NAME)
      .setBranch(DEFAULT_BRANCH_NAME)
      .setVisitorId(VISITOR_ID)
      .setQuery(query)
      .setPageSize(pageSize)
      .setQueryExpansionSpec(queryExpansionSpec)
      .build();

  try (SearchServiceClient searchClient = SearchServiceClient.create()) {
    SearchResponse response = searchClient.search(searchRequest).getPage().getResponse();
    System.out.println("Search response: " + searchResponse);
  }
}

Misalnya, jika Anda menelusuri Google Pixel 5 tanpa perluasan kueri, hasilnya akan dibatasi untuk ID google_pixel_5. Namun, dengan perluasan kueri, Anda mungkin juga mendapatkan ID google_pixel_4a_with_5g, google_pixel_4a, dan google_pixel_5_case dalam set data contoh deskripsi produk.