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 kumpulan dokumen tertentu.
Sebelum memulai
Pastikan Anda telah membuat aplikasi media dan penyimpanan data serta menyerap 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 bagian tersebut 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 dirangkum oleh bentuk Backus–Naur yang Diperluas 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:
Memilih
, lalu kolom tersebut siap difilter untuk penelusuran; lewati langkah 3.tidak dipilih, lalu ikuti langkah 3 untuk mengaktifkan kolom agar dapat diindeks.
tidak tersedia, 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 Indexable di baris categories, lalu klik Save.
Tunggu enam jam agar pengeditan skema Anda diterapkan. Setelah enam jam, Anda dapat melanjutkan ke langkah berikut.
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 mulai, dan Anda hanya ingin hasil penelusuran untuk film yang: (1) Berisi kata "avatar", dan (2) berada dalam kategori "Dokumentari". Anda dapat melakukannya dengan menyertakan pernyataan berikut dengan panggilan Anda:
"query": "avatar", "filter": "categories: ANY(\"Documentary\")"
Untuk mengetahui informasi selengkapnya, lihat metode
search
.Klik untuk melihat contoh respons.
Jika melakukan penelusuran seperti yang ada dalam prosedur sebelumnya, Anda akan mendapatkan respons yang mirip dengan berikut ini. Perhatikan bahwa respons hanya menyertakan 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": {} }
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.
Filternya 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:
Filter berdasarkan rating: filter berdasarkan rating dari sumber tertentu.
rating(RATING_SOURCE, aggregate_ratings.rating_score) OPERATOR RATING_SCORE
Ganti kode berikut:
RATING_SOURCE
: sumber untuk 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 di-resolve ke nilai rating IMDB:
"filter": "filter: "rating(imdb, aggregate_ratings.rating_score) > 2.5"
Filter orang: filter 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 salah satu aktornya adalah 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 dengan organisasi produksi 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 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 organisasi 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
.