Jika memiliki aplikasi penelusuran media, Anda dapat menggunakan metadata untuk memfilter kueri penelusuran. Halaman ini menjelaskan cara menggunakan kolom metadata untuk membatasi penelusuran Anda ke sekumpulan dokumen tertentu.
Sebelum memulai
Pastikan Anda telah membuat aplikasi media dan penyimpanan data serta memasukkan data. Untuk mengetahui informasi selengkapnya, lihat Membuat penyimpanan data media dan Membuat aplikasi media.
Contoh dokumen
Tinjau contoh dokumen media ini. Anda dapat merujuk kembali ke sana saat membaca halaman ini.
{"id":"172851","schemaId":"default_schema","jsonData":"{\"title\":\"Avatar: Creating the World of Pandora (2010)\",\"categories\":[\"Documentary\"],\"uri\":\"http://mytestdomain.movie/content/172851\",\"available_time\":\"2023-01-01T00:00:00Z\",\"media_type\":\"movie\"}"}
{"id":"243308","schemaId":"default_schema","jsonData":"{\"title\":\"Capturing Avatar (2010)\",\"categories\":[\"Documentary\"],\"uri\":\"http://mytestdomain.movie/content/243308\",\"available_time\":\"2023-01-01T00:00:00Z\",\"media_type\":\"movie\"}"}
{"id":"280218","schemaId":"default_schema","jsonData":"{\"title\":\"Avatar: The Way of Water (2022)\",\"categories\":[\"Action\",\"Adventure\",\"Sci-Fi\"],\"uri\":\"http://mytestdomain.movie/content/280218\",\"available_time\":\"2023-01-01T00:00:00Z\",\"media_type\":\"movie\"}"}
{"id":"72998","schemaId":"default_schema","jsonData":"{\"title\":\"Avatar (2009)\",\"categories\":[\"Action\",\"Adventure\",\"Sci-Fi\",\"IMAX\"],\"uri\":\"http://mytestdomain.movie/content/72998\",\"available_time\":\"2023-01-01T00:00:00Z\",\"media_type\":\"movie\"}"}
Sintaksis ekspresi filter
Pastikan Anda memahami sintaksis ekspresi filter yang akan digunakan untuk menentukan filter penelusuran. Sintaksis ekspresi filter dapat diringkas dengan Extended Backus–Naur form berikut:
# A single expression or multiple expressions that are joined by "AND" or "OR". filter = expression, { " AND " | "OR", expression }; # Expressions can be prefixed with "-" or "NOT" to express a negation. expression = [ "-" | "NOT " ], # A parenthetical expression. | "(", expression, ")" # A simple expression applying to a text field. # Function "ANY" returns true if the field contains any of the literals. ( text_field, ":", "ANY", "(", literal, { ",", literal }, ")" # A simple expression applying to a numerical field. Function "IN" returns true # if a field value is within the range. By default, lower_bound is inclusive and # upper_bound is exclusive. | numerical_field, ":", "IN", "(", lower_bound, ",", upper_bound, ")" # A simple expression that applies to a numerical field and compares with a double value. | numerical_field, comparison, double ); # Datetime field | datetime_field, comparison, literal_iso_8601_datetime_format); # A lower_bound is either a double or "*", which represents negative infinity. # Explicitly specify inclusive bound with the character 'i' or exclusive bound # with the character 'e'. lower_bound = ( double, [ "e" | "i" ] ) | "*"; # An upper_bound is either a double or "*", which represents infinity. # Explicitly specify inclusive bound with the character 'i' or exclusive bound # with the character 'e'. upper_bound = ( double, [ "e" | "i" ] ) | "*"; # Supported comparison operators. comparison = "<=" | "<" | ">=" | ">" | "="; # A literal is any double quoted string. You must escape backslash (\) and # quote (") characters. literal = double quoted string; text_field = text field - for example, category; numerical_field = numerical field - for example, score; datetime_field = field of datetime data type - for example available_time; literal_iso_8601_datetime_format = either a double quoted string representing ISO 8601 datetime or a numerical field representing microseconds from unix epoch.
Memfilter penelusuran media
Untuk memfilter penelusuran media menggunakan metadata, ikuti langkah-langkah berikut:
Temukan ID penyimpanan data Anda. Jika Anda sudah memiliki ID penyimpanan data, lanjutkan ke langkah berikutnya.
Di konsol Google Cloud , buka halaman AI Applications dan 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
categories
sebagai filter.Anda hanya dapat menggunakan kolom yang dapat diindeks dalam ekspresi filter. Untuk menentukan apakah kolom dapat diindeks, lakukan hal berikut:
Di konsol Google Cloud , buka halaman AI Applications dan di menu navigasi, klik Data Stores.
Klik nama penyimpanan data Anda.
Di kolom Nama, klik penyimpanan data.
Klik tab Schema untuk melihat skema penyimpanan data Anda. Jika Dapat diindeks untuk kolom adalah:
yang dipilih, lalu kolom tersebut siap difilter untuk penelusuran; lewati langkah 3.
Jika
tidak dipilih, ikuti langkah 3 untuk mengaktifkan kolom agar diindeks.Tidak tersedia di
, maka kolom tidak dapat diindeks.
Untuk membuat kolom, seperti kolom
categories
, dapat difilter, lakukan hal berikut:Di konsol Google Cloud , buka halaman AI Applications, dan di menu navigasi, klik Apps.
Klik aplikasi penelusuran media Anda.
Di menu navigasi, klik Data.
Klik tab Schema. Tab ini menampilkan setelan kolom saat ini.
Klik Edit.
Jika belum dipilih, centang kotak Dapat diindeks di baris kategori, lalu klik Simpan.
Tunggu enam jam agar pengeditan skema Anda diterapkan. Setelah enam jam, Anda dapat melanjutkan ke langkah berikutnya.
Mendapatkan hasil penelusuran.
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://discoveryengine.googleapis.com/v1beta/projects/PROJECT_ID/locations/global/collections/default_collection/dataStores/DATA_STORE_ID/servingConfigs/default_search:search" \ -d '{ "query": "QUERY", "filter": "FILTER" }'
Ganti kode berikut:
PROJECT_ID
: ID project Anda.DATA_STORE_ID
: ID penyimpanan data Anda.QUERY
: teks kueri yang akan ditelusuri.FILTER
: kolom teks untuk memfilter penelusuran menggunakan ekspresi filter.
Misalnya, Anda ingin menelusuri film di bagian Sebelum Anda mulai, dan Anda hanya ingin hasil penelusuran untuk film yang: (1) Berisi kata "avatar", dan (2) berada dalam kategori "Dokumenter". Anda dapat melakukannya dengan menyertakan pernyataan berikut dalam panggilan Anda:
"query": "avatar", "filter": "categories: ANY(\"Documentary\")"
Untuk mengetahui informasi selengkapnya, lihat metode
search
.Klik untuk melihat contoh respons.
Jika Anda melakukan penelusuran seperti yang ada dalam prosedur sebelumnya, Anda dapat mengharapkan respons yang serupa dengan berikut ini. Perhatikan bahwa respons hanya mencakup film dokumenter Avatar.
{ "results": [ { "id": "243308", "document": { "name": "projects/431678329718/locations/global/collections/default_collection/dataStores/rdds3_1698205785399/branches/0/documents/243308", "id": "243308", "structData": { "categories": [ "Documentary" ], "title": "Capturing Avatar (2010)", "uri": "http://mytestdomain.movie/content/243308", "media_type": "movie" } } }, { "id": "172851", "document": { "name": "projects/431678329718/locations/global/collections/default_collection/dataStores/rdds3_1698205785399/branches/0/documents/172851", "id": "172851", "structData": { "categories": [ "Documentary" ], "uri": "http://mytestdomain.movie/content/172851", "media_type": "movie", "title": "Avatar: Creating the World of Pandora (2010)" } } } ], "totalSize": 2, "attributionToken": "XfBcCgwIvIzJqwYQ2_qNxwMSJDY1NzEzNmY1LTAwMDAtMmFhMy05YWU3LTE0MjIzYmIwOGVkMiIFTUVESUEqII6-nRXFy_MXnIaOIsLwnhXUsp0VpovvF6OAlyKiho4i", "guidedSearchResult": {}, "summary": {} }
Memfilter dokumen yang tersedia
Jika Anda ingin hasil penelusuran hanya menampilkan dokumen yang tersedia, Anda harus
menyertakan filter untuk hal ini dalam kueri Anda. Dokumen yang tersedia adalah dokumen yang
available_time
-nya ada di masa lalu dan expire_time
-nya tidak ditentukan atau
ditetapkan ke tanggal di masa mendatang.
Filter untuk hanya menampilkan dokumen yang saat ini tersedia:
available_time <= \"DATE_TIME\" AND expire_time > \"DATE_TIME\"
Ganti DATE_TIME
dengan tanggal hari ini—misalnya,
2025-04-21
atau 2025-04-21T00:00:00Z
.
Filter untuk rating, orang, dan organisasi
Sintaksis filter untuk rating media, orang, dan organisasi bersifat unik dan tidak mengikuti pola di atas. Gunakan contoh berikut dan cuplikan filter yang dapat disalin untuk membuat filter bagi rating, orang, dan organisasi.
Filter berbeda-beda bergantung pada apakah Anda menggunakan skema standar Google atau skema kustom Anda sendiri.
Filter untuk rating, orang, dan organisasi (skema standar Google)
Sintaksis dan contoh untuk filter rating, orang, dan organisasi adalah sebagai berikut:
Memfilter rating: memfilter rating dari sumber tertentu.
rating(RATING_SOURCE, aggregate_ratings.rating_score) OPERATOR RATING_SCORE
Ganti kode berikut:
RATING_SOURCE
: sumber rating. Untuk skema yang telah ditentukan sebelumnya, ini adalah nilai di kolomaggregate_ratings.rating_source
.OPERATOR
: salah satu operator perbandingan,<=
,<
,>=
,>
, atau=
RATING_SCORE
: nilai rating dalam rentang [1,5]. Untuk skema standar, ini adalah nilai di kolomaggregate_ratings.rating_score
.
Contoh: Filter ini membatasi penelusuran ke film dengan rating IMDB lebih dari 2½ bintang. Nilai dalam tanda kurung diselesaikan ke nilai rating IMDB:
"filter": "rating(imdb, aggregate_ratings.rating_score) > 2.5"
Filter orang: memfilter nama orang untuk peran tertentu.
person(PERSONS_ROLE, persons.name): ANY NAME_STRING
Ganti kode berikut:
PERSONS_ROLE
: Untuk skema yang telah ditentukan sebelumnya, ini adalah nilai di kolompersons.role
(director
,actor
,player
,team
,league
,editor
,author
,character
,contributor
,creator
,editor
,funder
,producer
,provider
,publisher
,sponsor
,translator
,music-by
,channel
, ataucustom-role
).NAME_STRING
: Satu atau beberapa nama orang dengan peran yang ditentukan. Untuk perintah curl, seperti pada Langkah 4, tanda kutip ganda harus di-escape dengan karakter garis miring terbalik.
Contoh: Filter ini membatasi penelusuran ke film yang dibintangi Brad Pitt atau Kate Winslet.
filter: "person(actor, persons.name): ANY(\"Brad Pitt\", \"Kate Winslet\")"
Filter organisasi: memfilter nama organisasi untuk peran tertentu.
org(ORG_ROLE, organization.name): ANY NAME_STRING
Ganti kode berikut:
ORG_ROLE
: Untuk skema yang telah ditentukan sebelumnya, ini adalah nilai di kolomorganizations.role
(director
,actor
,player
,team
,league
,editor
,author
,character
,contributor
,creator
,editor
,funder
,producer
,provider
,publisher
,sponsor
,translator
,music-by
,channel
, ataucustom-role
).NAME_STRING
: Satu atau beberapa nama organisasi dengan peran yang ditentukan. Untuk perintah curl, seperti pada Langkah 4, tanda kutip ganda harus di-escape dengan karakter garis miring terbalik.
Contoh ini membatasi penelusuran ke film yang organisasi produksinya adalah Walt Disney Studios:
filter: "org(producer, organizations.name): ANY(\"Walt Disney Studios\")"
Filter untuk rating, orang, dan organisasi (skema kustom)
Jika Anda menggunakan skema kustom, tinjau bagian Skema standar Google, lalu contoh di bagian ini. Agar filter rating, orang, dan organisasi berfungsi dalam skema kustom, pemetaan properti harus ditetapkan dengan benar. Untuk mengetahui informasi tentang pemetaan properti, lihat Skema kustom.
Filter | Properti yang akan dipetakan |
---|---|
rating | media_aggregated_rating media_aggregated_rating_score media_aggregated_rating_source |
pengguna | media_person media_person_name media_person_role |
diagram | media_organization media_organization_name media_organization_role |
Contoh filter rating untuk skema kustom
Filter ini menelusuri film yang memiliki rating 5 bintang dari Rotten Tomatoes:
"filter": "rating(rotten_tomatoes, custom_rating.star_score) = 5"
rotten_tomatoes
adalah nilai di kolom yang dipetakan ke
media_aggregated_rating_source
. custom_rating.star_score
adalah kolom yang dipetakan ke properti kunci media_aggregated_rating.media_aggregated_rating_score
.
Contoh filter org untuk skema kustom
Filter ini menelusuri film yang musiknya dibuat oleh London Symphony Orchestra atau Hollywood Studio Symphony.
"filter: org(music-by, company.id): ANY (\"London Symphony Orchestra\", \"Hollywood Studio Symphony\" )
company.id
adalah nama kolom
yang dipetakan ke properti media_organization_name
. Selain itu, music-by
adalah nilai
di kolom data perusahaan yang dipetakan ke media_organization_role
.