Skema Google Cloud Search adalah struktur JSON yang menentukan objek, properti, dan opsi untuk mengindeks dan membuat kueri data. Konektor konten Anda menggunakan skema terdaftar untuk menyusun dan mengindeks data repositori.
Anda membuat skema dengan memberikan objek skema JSON ke API. Anda harus mendaftarkan skema untuk setiap repositori sebelum mengindeks data.
Dokumen ini membahas dasar-dasar pembuatan skema. Untuk mengoptimalkan pengalaman penelusuran, lihat Meningkatkan kualitas penelusuran.
Membuat skema
Ikuti langkah-langkah berikut untuk membuat skema Cloud Search:
- Mengidentifikasi perilaku pengguna yang diharapkan
- Menginisialisasi sumber data
- Menentukan objek Anda
- Menentukan properti objek
- Mendaftarkan skema Anda
- Mengindeks data Anda
- Menguji skema Anda
- Menyesuaikan skema
Mengidentifikasi perilaku pengguna yang diharapkan
Mengantisipasi cara pengguna melakukan penelusuran akan membantu menentukan strategi skema Anda. Untuk database film, pengguna mungkin menelusuri "film yang dibintangi Robert Redford". Skema Anda harus mendukung kueri untuk film dengan aktor tertentu.
Untuk menyelaraskan skema Anda dengan perilaku pengguna:
- Mengevaluasi beragam kueri dari pengguna yang berbeda.
- Identifikasi set data logis, atau objek, seperti "film".
- Mengidentifikasi properti (atribut) seperti judul atau tanggal rilis.
- Identifikasi nilai yang valid untuk properti, seperti "Raiders of the Lost Ark".
- Tentukan kebutuhan pengurutan dan pembuatan peringkat, seperti urutan kronologis atau peringkat audiens.
- Mengidentifikasi properti konteks, seperti peran pekerjaan, untuk meningkatkan kualitas saran pelengkapan otomatis.
- Buat daftar objek, properti, dan nilai contoh ini. Gunakan daftar ini untuk menentukan opsi operator.
Menginisialisasi sumber data Anda
Sumber data mewakili data repositori terindeks yang disimpan di Google Cloud. Lihat Mengelola sumber data pihak ketiga. Saat pengguna mengklik hasil, Cloud Search akan mengarahkannya ke item menggunakan URL dari permintaan pengindeksan.
Menentukan objek Anda
Objek adalah unit dasar skema. Struktur logis seperti "film" atau "orang" adalah objek. Setiap objek memiliki properti seperti judul, durasi, atau nama.
Skema adalah daftar
definisi objek dalam tag objectDefinitions.
{
"objectDefinitions": [
{ "name": "movie" },
{ "name": "person" }
]
}
Gunakan nama unik untuk setiap objek, seperti movie. Layanan skema menggunakan nama-nama ini sebagai kunci. Lihat
ObjectDefinition.
Menentukan properti objek
Tentukan properti, seperti judul dan tanggal rilis, di bagian propertyDefinitions. Gunakan
options
untuk
freshnessOptions
(peringkat) dan
displayOptions
(label UI).
{
"objectDefinitions": [{
"name": "movie",
"propertyDefinitions": [
{
"name": "movieTitle",
"isReturnable": true,
"textPropertyOptions": {
"retrievalImportance": { "importance": "HIGHEST" },
"operatorOptions": { "operatorName": "title" }
},
"displayOptions": { "displayLabel": "Title" }
},
{
"name": "releaseDate",
"isReturnable": true,
"isSortable": true,
"datePropertyOptions": {
"operatorOptions": {
"operatorName": "released",
"lessThanOperatorName": "releasedbefore",
"greaterThanOperatorName": "releasedafter"
}
}
}
]
}]
}
PropertyDefinition mencakup:
- String
name. - Opsi agnostik jenis (misalnya,
isReturnable). - Jenis dan opsi khusus jenis (misalnya,
textPropertyOptions). operatorOptionsuntuk operator penelusuran.displayOptionsuntuk label UI.
Anda dapat menggunakan kembali nama properti di berbagai objek. Misalnya, movieTitle
dapat muncul di objek movie dan filmografi objek person.
Menambahkan opsi jenis agnostik
PropertyDefinition
mencakup opsi boolean untuk mengonfigurasi fungsi penelusuran untuk properti,
terlepas dari jenisnya. Opsi ini secara default adalah false dan harus disetel ke
true agar dapat digunakan.
isReturnable: Setel ketruejika data properti harus ditampilkan dalam hasil penelusuran menggunakan Query API. Properti yang tidak dapat ditampilkan dapat digunakan untuk menelusuri atau memberi peringkat tanpa muncul di hasil.isRepeatable: Setel ketruejika properti dapat memiliki beberapa nilai. Misalnya, suatu film memiliki satu tanggal rilis tetapi beberapa aktor.isSortable: Tetapkan ketruejika properti dapat digunakan untuk penyortiran. Tidak boleh berupatruejikaisRepeatableadalahtrueatau jika properti berada di dalam sub-objek berulang.isFacetable: Setel ketruejika properti dapat digunakan untuk membuat aspek (atribut yang digunakan untuk mempertajam hasil penelusuran).- Memerlukan
isReturnablemenjaditrue. - Hanya didukung untuk properti enumerasi, boolean, dan teks.
- Memerlukan
isWildcardSearchable: Setel ketrueuntuk mengizinkan pengguna melakukan penelusuran karakter pengganti pada properti ini. Opsi ini hanya tersedia di properti teks dan perilakunya bergantung pada setelanexactMatchWithOperator:- Jika
exactMatchWithOperatoradalahtrue: Nilai teks diperlakukan sebagai satu token. Kueri sepertiscience-*cocok dengan nilaiscience-fiction. - Jika
exactMatchWithOperatoradalahfalse: Nilai teks di-tokenisasi. Kueri sepertisci*ataufi*cocok denganscience-fiction, tetapiscience-*tidak cocok.
- Jika
Menentukan jenis
Tetapkan jenis data dengan menentukan objek opsi properti yang sesuai (misalnya,
textPropertyOptions). Gunakan enum (enumPropertyOptions) jika Anda mengetahui semua kemungkinan nilai. Properti hanya dapat memiliki satu jenis data.
Menentukan opsi operator
operatorOptions menjelaskan cara kerja properti sebagai operator penelusuran.
Setiap operatorOptions memerlukan operatorName (misalnya, title). Ini adalah
parameter yang dimasukkan pengguna dalam kueri (misalnya, title:titanic). Gunakan nama yang intuitif dan tampilkan kepada pengguna.
Anda dapat membagikan operatorName di seluruh properti dengan jenis yang sama. Kueri
yang menggunakan nama tersebut akan mengambil hasil dari semua properti yang cocok.
Properti yang dapat diurutkan dapat mencakup lessThanOperatorName dan
greaterThanOperatorName untuk kueri perbandingan. Properti teks dapat menggunakan
exactMatchWithOperator untuk memperlakukan seluruh nilai sebagai satu token.
Menambahkan opsi tampilan
Bagian displayOptions opsional berisi displayLabel. Ini adalah
label yang mudah digunakan dan ditampilkan di hasil penelusuran.
Menambahkan operator pemfilteran saran
Gunakan suggestionFilteringOperators[] untuk menentukan properti yang memfilter saran pelengkapan otomatis (misalnya, memfilter saran film menurut genre pilihan pengguna). Anda hanya dapat menentukan satu filter saran.
Mendaftarkan skema
Daftarkan skema Anda ke layanan skema menggunakan ID sumber data Anda. Kirimkan permintaan UpdateSchema:
PUT https://cloudsearch.googleapis.com/v1/indexing/{name=datasources/*}/schema
Gunakan validateOnly: true untuk menguji skema tanpa mendaftarkannya.
Mengindeks data
Setelah pendaftaran, isi sumber data menggunakan panggilan Indeks, biasanya dengan konektor.
Contoh permintaan pengindeksan:
{
"name": "datasource/<data_source_id>/items/titanic",
"metadata": {
"title": "Titanic",
"objectType": "movie"
},
"structuredData": {
"object": {
"properties": [{
"name": "movieTitle",
"textValues": { "values": ["Titanic"] }
}]
}
},
"itemType": "CONTENT_ITEM"
}
Menguji skema
Lakukan pengujian dengan repositori kecil sebelum produksi. Buat ACL yang membatasi hasil untuk pengguna uji.
- Kueri umum: Menelusuri string (misalnya, "titanic") untuk melihat semua item yang cocok.
- Kueri operator: Gunakan operator (misalnya,
actor:Zane) untuk membatasi hasil.
Menyesuaikan skema
Pantau masukan pengguna dan sesuaikan skema Anda. Anda dapat mengindeks kolom baru atau mengganti nama operator agar lebih intuitif.
Mengindeks ulang setelah perubahan skema
Anda tidak perlu mengindeks ulang agar perubahan pada:
- Nama operator.
- Batas numerik.
- Peringkat berurutan.
- Opsi keaktualan atau tampilan.
Anda harus mengindeks ulang untuk:
- Menambahkan atau menghapus properti atau objek.
- Mengubah
isReturnable,isFacetable, atauisSortablemenjaditrue. - Menandai properti
isSuggestable.
Perubahan properti yang tidak diizinkan
Perubahan yang merusak indeks atau menyebabkan hasil yang tidak konsisten tidak diizinkan, termasuk:
- Jenis atau nama data properti.
exactMatchWithOperatoratauretrievalImportance.
Membuat perubahan skema yang kompleks
Untuk melakukan perubahan yang tidak diizinkan, migrasikan properti dari definisi lama ke definisi baru:
- Tambahkan properti baru dengan nama yang berbeda ke skema.
- Daftarkan skema dengan properti baru dan lama.
- Isi ulang indeks hanya menggunakan properti baru.
- Hapus properti lama dari skema.
- Perbarui kode kueri Anda untuk menggunakan nama properti baru.
Cloud Search mencatat item yang dihapus selama 30 hari untuk mencegah masalah penggunaan kembali.
Batasan ukuran
- Maksimum 10 objek tingkat atas.
- Kedalaman maksimum 10 tingkat.
- Maksimum 1.000 kolom per objek (termasuk kolom bertingkat).
Langkah Berikutnya
- Buat antarmuka penelusuran.
- Meningkatkan kualitas penelusuran.
- Buat struktur skema untuk mendapatkan interpretasi kueri yang optimal.
- Menentukan sinonim.