Jika memiliki aplikasi rekomendasi, Anda dapat menggunakan kolom dokumen untuk memfilter hasil rekomendasi. Halaman ini menjelaskan cara menggunakan kolom dokumen untuk memfilter rekomendasi ke kumpulan dokumen tertentu. Meskipun contoh di halaman ini adalah untuk rekomendasi media, prinsip yang ditampilkan di sini sama untuk rekomendasi kustom. Untuk mengetahui informasi selengkapnya tentang rekomendasi media, lihat Pengantar Penelusuran Agen untuk media.
Memfilter rekomendasi dan update penyimpanan data
Setelah update penyimpanan data apa pun, Anda harus menunggu hingga 8 jam saat model dilatih ulang. Hal ini karena model perlu mengetahui nilai saat ini dalam metadata dokumen, serta kolom mana yang dikonfigurasi sebagai dapat difilter. Anda harus menunggu perubahan dokumen dan perubahan skema diterapkan. Untuk rekomendasi (tidak seperti untuk penelusuran), pemfilteran tidak dilakukan secara real time.
Setelan filter dan diversifikasi (Khusus rekomendasi media)
Selain filter, setelan diversifikasi aplikasi juga memengaruhi hasil yang ditampilkan dalam respons rekomendasi media. Efek filter dan diversifikasi digabungkan. Diversifikasi dilakukan terlebih dahulu dan pemfilteran dilakukan kedua.
Menggabungkan diversitas berbasis aturan yang tinggi dan pemfilteran atribut berbasis kategori sering kali menghasilkan output kosong. Hal ini karena diversitas tinggi membatasi aplikasi untuk menampilkan satu hasil untuk setiap kategori.
Misalnya, Anda ingin merekomendasikan film berdasarkan Toy Story. Anda menetapkan tingkat diversitas berbasis aturan ke tinggi. Karena tingkat diversitasnya tinggi, meskipun banyak film yang mungkin direkomendasikan, hanya satu film (misalnya, WALL·E) dalam kategori film anak-anak yang ditampilkan. Saat filter untuk film anak-anak diterapkan, hanya WALL·E yang ditampilkan sebagai rekomendasi.
Untuk mengetahui informasi umum tentang diversitas, lihat Mendiversifikasi rekomendasi media.
Sebelum memulai
Pastikan Anda telah membuat aplikasi rekomendasi dan penyimpanan data. Untuk mengetahui informasi selengkapnya, lihat Membuat aplikasi media atau Membuat penyimpanan data rekomendasi kustom.
Contoh dokumen
Tinjau contoh dokumen media ini. Anda dapat merujuk kembali ke contoh dokumen ini saat membaca halaman ini.
{"id":"1","schemaId":"default_schema","structData":{"title":"Toy Story (1995)","categories":["Adventure","Animation","Children","Comedy","Fantasy"],"uri":"http://mytestdomain.movie/content/1","available_time":"2023-01-01T00:00:00Z","media_type":"movie"}}
{"id":"88125","schemaId":"default_schema","structData":{"title":"Harry Potter and the Deathly Hallows: Part 2 (2011)","categories":["Action","Adventure","Drama","Fantasy","Mystery","IMAX"],"uri":"http://mytestdomain.movie/content/88125","available_time":"2023-01-01T00:00:00Z","media_type":"movie"}}
{"id":"2857","schemaId":"default_schema","structData":{"title":"Yellow Submarine (1968)","categories":["Adventure","Animation","Comedy","Fantasy","Musical"],"uri":"http://mytestdomain.movie/content/2857","available_time":"2023-01-01T00:00:00Z","media_type":"movie"}}
{"id":"60069","schemaId":"default_schema","structData":{"title":"WALL·E (2008)","categories":["Adventure","Animation","Children","Romance","Sci-Fi"],"uri":"http://mytestdomain.movie/content/60069","available_time":"2023-01-01T00:00:00Z","media_type":"movie"}}
Ekspresi filter
Gunakan ekspresi filter untuk menentukan filter rekomendasi Anda.
Sintaksis ekspresi filter
Extended Backus–Naur form berikut merangkum sintaksis ekspresi filter yang dapat Anda gunakan untuk menentukan filter rekomendasi.
# A single expression or multiple expressions that are joined by "AND" or "OR". filter = expression, { " AND " | "OR", expression }; # An expression can be prefixed with "-" or "NOT" to express a negation. expression = [ "-" | "NOT " ], # A parenthesized expression | "(", expression, ")" # A simple expression applying to a textual field. # Function "ANY" returns true if the field contains any of the literals. textual_field, ":", "ANY", "(", literal, { ",", literal }, ")" # OR filter by "available" available, ":", "true", # A literal is any double-quoted string. You must escape backslash (\) and # quote (") characters. literal = double-quoted string; textual_field = see the tables below;
Batasan ekspresi filter
Batasan berikut berlaku untuk ekspresi filter untuk rekomendasi:
- Kedalaman penyematan operator
ANDdanORdalam tanda kurung dibatasi. Ekspresi logis dalam filter harus dalam bentuk normal konjungtif (CNF). Ekspresi logis yang paling kompleks yang didukung dapat berupa daftar klausa yang terhubungANDyang hanya berisiORseperti:(... OR ... OR ...) AND (... OR ...) AND (... OR ...) Ekspresi dapat dinegasikan dengan kata kunci
NOTatau dengan-. Hal ini hanya berfungsi dengan ekspresiANY()dengan satu argumen.Batasan
availableharus berada di tingkat teratas. Batasan ini tidak dapat digunakan sebagai bagian dari klausaORatau negasi (NOT). Anda hanya dapat menggunakanavailable: true. Jika Anda menghapus filter ini, dokumen yang sudah tidak berlaku dan dokumen yang belum tersedia mungkin akan ditampilkan sebagai rekomendasi.Kolom
availabledipetakan ke logika berikut:datetime.now >= available_time AND datetime.now <= expire_timeJika
expire_timetidak ditetapkan,datetime.now <= expire_timeakan diselesaikan ketrue.Jumlah maksimum istilah dalam klausa
ANDtingkat teratas adalah 20.Klausa
ORdapat memiliki hingga 100 argumen yang disertakan dalam ekspresiANY(). Jika klausaORmemiliki beberapa ekspresiANY(), semua argumennya akan dihitung terhadap batas ini. Misalnya,categories: ANY("drama", "comedy") OR categories: ANY("adventure")memiliki tiga argumen.
Contoh ekspresi filter
Tabel berikut menunjukkan contoh ekspresi filter yang valid dan tidak valid. Tabel ini juga memberikan alasan mengapa contoh yang tidak valid tidak valid.
| Ekspresi | Valid | Catatan |
|---|---|---|
language_code: ANY("en", "fr") |
Ya | |
NOT language_code: ANY("en") |
Ya | |
NOT language_code: ANY("en", "fr") |
Tidak | Menegasikan ANY() dengan lebih dari satu argumen. |
language_code: ANY("en", "fr") OR categories: ANY("drama") |
Ya | |
(language_code: ANY("en") OR language_code: ANY("fr")) AND categories: ANY("drama") |
Ya | |
(language_code: ANY("en") AND language_code: ANY("fr")) OR categories: ANY("drama") |
Tidak | Tidak dalam bentuk normal konjungtif. |
(language_code: ANY("en")) AND (available: true) |
Ya | |
(language_code: ANY("en")) OR (available: true) |
Tidak | Menggabungkan available dalam ekspresi OR dengan kondisi lain. |
Ekspresi filter berikut memfilter dokumen yang berada dalam kategori drama atau aksi, yang tidak dalam bahasa Inggris, dan yang tersedia:
categories: ANY("drama", "action") AND NOT language_code: ANY("en") AND available: true
Batas pemfilteran
Setiap kolom dokumen yang dapat difilter menggunakan sejumlah memori di setiap model Anda. Batas berikut membantu mencegah efek buruk pada performa penayangan:
Maksimal 10 kolom kustom dapat ditetapkan sebagai dapat difilter dalam skema Anda.
Jika lebih dari 10 kolom kustom ditemukan selama pelatihan aplikasi, hanya 10 yang digunakan.
Maksimal 100.000.000 nilai kolom yang dapat difilter dapat ada dalam skema Anda.
Anda dapat memperkirakan jumlah total nilai kolom yang dapat difilter dalam skema dengan mengalikan jumlah dokumen dalam skema dengan jumlah kolom yang dapat difilter. Jika Anda melebihi batas ini, hal berikut akan terjadi:
- Anda tidak dapat menetapkan kolom tambahan sebagai dapat difilter.
- Pelatihan aplikasi gagal.
Memfilter rekomendasi
Untuk memfilter rekomendasi media, ikuti langkah-langkah berikut:
Temukan ID penyimpanan data Anda. Jika Anda sudah memiliki ID penyimpanan data, lanjutkan ke langkah berikutnya.
Di Google Cloud konsol, buka halaman AI Applications , lalu di menu navigasi, klik Data Stores.
Klik nama penyimpanan data Anda.
Di halaman Data untuk penyimpanan data Anda, dapatkan ID penyimpanan data.
Tentukan kolom dokumen yang ingin Anda filter. Misalnya, untuk dokumen di Sebelum memulai, Anda dapat menggunakan kolom
categoriessebagai filter.Untuk membuat kolom
categoriesdapat difilter, lakukan hal berikut:Di Google Cloud konsol, buka halaman AI Applications.
Klik aplikasi rekomendasi Anda.
Klik tab Schema. Tab ini menampilkan setelan kolom saat ini.
Klik Edit.
Jika belum dipilih, centang kotak Filterable di baris categories, lalu klik Save.
Tunggu enam jam untuk memberi waktu agar pengeditan skema Anda diterapkan. Setelah enam jam, Anda dapat melanjutkan ke langkah berikut.
Untuk mendapatkan rekomendasi dan memfilter kolom
categories, jalankan kode berikut di command line:curl -X POST \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ -d '{ "userEvent": { "eventType": "EVENT_TYPE", "userPseudoId": "USER_PSEUDO_ID", "documents": { "id": "DOCUMENT_ID" } }, "params": { "returnDocument": true, "attributeFilteringSyntax": true, "strictFiltering": true }, "filter": "FILTER" }' \ "https://discoveryengine.googleapis.com/v1beta/projects/PROJECT_ID/locations/global/collections/default_collection/dataStores/DATA_STORE_ID/servingConfigs/SERVING_CONFIG_ID:recommend"Ganti kode berikut:
PROJECT_ID: ID project Anda.DATA_STORE_ID: ID penyimpanan data Anda.DOCUMENT_ID: ID dokumen yang ingin Anda pratinjau rekomendasinya. Gunakan ID yang Anda gunakan untuk dokumen ini saat Anda melakukan penyerapan data.EVENT_TYPE: jenis peristiwa pengguna. Untuk nilaieventType, lihat UserEvent.USER_PSEUDO_ID: string berenkode UTF-8, yang bertindak sebagai ID pseudonim unik yang melacak pengguna. ID ini dapat memiliki panjang maksimum 128 karakter. Google sangat merekomendasikan penggunaan kolom ini karena meningkatkan performa model dan kualitas personalisasi. Anda dapat menggunakan cookie HTTP untuk kolom ini, yang secara unik mengidentifikasi pengunjung di satu perangkat. Beberapa pertimbangan penting adalah sebagai berikut:- ID ini tidak berubah saat pengunjung login atau logout dari situs.
- Kolom ini tidak boleh ditetapkan ke ID yang sama untuk beberapa pengguna. Jika tidak, ID pengguna yang sama dapat menggabungkan histori peristiwa pengguna yang berbeda dan menurunkan kualitas model.
- Kolom ini tidak boleh menyertakan informasi identitas pribadi (PII).
Untuk mengetahui informasi selengkapnya, lihat
userPseudoId.SERVING_CONFIG_ID: ID konfigurasi penayangan Anda. ID konfigurasi penayangan Anda sama dengan ID mesin Anda, jadi gunakan ID mesin Anda di sini.FILTER: kolom teks yang memungkinkan Anda memfilter kumpulan kolom tertentu, menggunakan sintaksis ekspresi filter. Nilai defaultnya adalah string kosong, yang berarti tidak ada filter yang diterapkan.
Misalnya, Anda menginginkan rekomendasi untuk peristiwa pengguna media-play tertentu, dan Anda ingin memfilter hasil rekomendasi agar hanya berisi dokumen yang: (1) Berada dalam kategori Anak-anak, dan (2) Saat ini tersedia. Anda dapat melakukannya dengan menyertakan pernyataan berikut dengan panggilan Anda:
"eventType": "media-play""filter": "categories: ANY(\"Children\") AND available: true"
Untuk mengetahui informasi selengkapnya, lihat metode
recommend.Klik untuk melihat contoh respons.
Jika Anda membuat permintaan rekomendasi seperti yang sebelumnya, Anda dapat mengharapkan untuk mendapatkan respons yang mirip dengan yang berikut. Perhatikan bahwa respons menyertakan dua dokumen yang memiliki nilai
categoriesChildrendan nilaiavailability_start_timeyang lebih baru dari tanggal saat ini.{ "results": [ { "id":"1", "schemaId":"default_schema", "structData":{"title":"Toy Story (1995)","categories":["Adventure","Animation","Children","Comedy","Fantasy"],"uri":"http://mytestdomain.movie/content/1", "availability_start_time":"2023-01-01T00:00:00Z", "media_type":"movie" } }, { "id":"60069", "schemaId":"default_schema", "structData":{"title":"WALL·E (2008)","categories":["Adventure","Animation","Children","Romance","Sci-Fi"],"uri":"http://mytestdomain.movie/content/60069", "availability_start_time":"2023-01-01T00:00:00Z", "media_type":"movie" } } ], "attributionToken": "ChMzMDk3NTQ4MzQxOTcxOTE0ODM1GglhZi10ZXN0LTEiDmFmLXRlc3QtMTE0NTE0KAAwBg" }