Skema Google Cloud Search adalah struktur JSON yang menentukan objek, properti, dan opsi yang akan digunakan dalam mengindeks dan membuat kueri data Anda. Konektor konten Anda membaca data dari repositori Anda serta membuat struktur dan mengindeks data berdasarkan skema yang terdaftar.
Anda dapat membuat skema dengan memberikan objek skema JSON ke API kemudian mendaftarkannya. Anda harus mendaftarkan objek skema untuk setiap repositori sebelum Anda dapat mengindeks data.
Dokumen ini membahas dasar-dasar pembuatan skema. Untuk mengetahui informasi tentang cara menyesuaikan skema guna meningkatkan pengalaman penelusuran, lihat Meningkatkan kualitas penelusuran.
Membuat skema
Berikut ini adalah daftar langkah-langkah yang digunakan untuk membuat skema Cloud Search:
- Mengidentifikasi perilaku pengguna yang diharapkan
- Melakukan inisialisasi sumber data
- Membuat skema
- Skema contoh lengkap
- Mendaftarkan skema
- Mengindeks data
- Menguji skema
- Menyesuaikan skema
Mengidentifikasi perilaku pengguna yang diharapkan
Mengantisipasi jenis kueri yang dibuat pengguna akan membantu mengarahkan strategi Anda dalam membuat skema.
Misalnya, saat mengeluarkan kueri terkait database film, Anda mungkin akan mengantisipasi pembuatan kueri yang dilakukan pengguna seperti "Tunjukkan semua film yang dibintangi Robert Redford". Oleh karena itu, skema Anda harus mendukung hasil kueri berdasarkan "semua film dengan aktor tertentu".
Untuk menentukan skema Anda agar dapat mencerminkan pola perilaku pengguna, pertimbangkan untuk melakukan tugas-tugas berikut:
- Evaluasi beragam set kueri yang diinginkan dari pengguna yang berbeda.
- Identifikasi objek yang mungkin digunakan dalam kueri. Objek adalah set logis dari data terkait, seperti film dalam database film.
- Identifikasi properti dan nilai yang menyusun objek dan mungkin digunakan dalam kueri. Properti adalah atribut yang dapat diindeks dari objek, yang dapat menyertakan nilai primitif atau objek lain. Misalnya, objek film mungkin memiliki properti seperti judul dan tanggal rilis film sebagai nilai primitif. Objek film mungkin juga berisi objek lain, seperti pemeran, yang memiliki properti sendiri, seperti nama atau peran mereka.
- Identifikasi contoh nilai yang valid untuk properti. Nilai adalah data aktual yang diindeks untuk properti. Misalnya, salah satu judul film dalam database Anda adalah "Raiders of the Lost Ark".
- Tentukan opsi pengurutan dan pembuatan peringkat yang diinginkan oleh pengguna. Misalnya, saat membuat kueri film, pengguna mungkin ingin mengurutkan secara kronologis dan memberi peringkat berdasarkan rating audiens serta tidak perlu mengurutkan sesuai abjad berdasarkan judul.
- (opsional) Pertimbangkan apakah salah satu properti Anda mewakili konteks yang lebih spesifik tempat penelusuran dapat dijalankan, seperti peran atau departemen pekerjaan pengguna, sehingga saran pelengkapan otomatis dapat diberikan berdasarkan konteks. Misalnya, untuk orang yang menelusuri database film, pengguna mungkin hanya tertarik dengan genre film tertentu. Pengguna akan menentukan genre yang ingin ditampilkan penelusuran mereka, mungkin sebagai bagian dari profil pengguna mereka. Kemudian, saat pengguna mulai mengetik kueri film, hanya film dalam genre pilihan mereka, seperti "film laga", yang disarankan sebagai bagian dari saran pelengkapan otomatis.
- Buat daftar objek, properti, dan nilai contoh tersebut yang dapat digunakan dalam penelusuran. (Untuk mengetahui detail tentang cara daftar ini digunakan, lihat bagian Menentukan opsi operator.)
Menginisialisasi sumber data Anda
Sumber data mewakili data dari repositori yang telah diindeks dan disimpan di Google Cloud. Untuk mengetahui petunjuk tentang cara menginisialisasi sumber data, lihat Mengelola sumber data pihak ketiga.
Hasil penelusuran pengguna akan ditampilkan dari sumber data. Ketika pengguna mengklik hasil penelusuran, Cloud Search akan mengarahkan pengguna tersebut ke item yang sebenarnya dengan menggunakan URL yang diberikan dalam permintaan pengindeksan.
Menentukan objek Anda
Unit dasar data dalam skema adalah objek, disebut juga "objek skema", yang merupakan struktur logis dari data. Dalam database film, salah satu struktur logis dari data adalah "film". Objek lainnya mungkin berupa "orang" untuk mewakili pemeran dan kru yang terlibat dalam film.
Setiap objek dalam skema memiliki serangkaian properti atau atribut yang menjelaskan objek, seperti judul dan durasi film, atau nama dan tanggal lahir seseorang. Properti suatu objek dapat menyertakan nilai primitif atau objek lain.
Gambar 1 menunjukkan objek film dan orang serta properti terkait.
Skema Cloud Search pada dasarnya adalah daftar pernyataan definisi objek yang ditentukan dalam tag objectDefinitions
. Cuplikan skema berikut menunjukkan pernyataan objectDefinitions
untuk objek skema film dan orang.
{
"objectDefinitions": [
{
"name": "movie",
...
},
{
"name": "person",
...
}
]
}
Saat menentukan objek skema, Anda dapat memberikan name
untuk objek yang harus bersifat unik di antara semua objek lain dalam skema. Biasanya Anda akan menggunakan nilai name
yang menjelaskan objek, seperti movie
untuk objek film. Layanan skema menggunakan kolom name
sebagai pengidentifikasi utama untuk objek yang dapat diindeks. Untuk mengetahui informasi lebih lanjut tentang kolom name
, lihat Definisi Objek.
Menentukan properti objek
Seperti yang ditentukan dalam referensi untuk
ObjectDefinition,
nama objek diikuti dengan kumpulan
options
,
dan daftar
propertyDefinitions
.
options
dapat
lebih lanjut terdiri dari
freshnessOptions
dan
displayOptions
.
freshnessOptions
digunakan untuk menyesuaikan peringkat penelusuran berdasarkan keaktualan item. displayOptions
digunakan untuk menentukan apakah label dan properti tertentu ditampilkan dalam hasil penelusuran suatu objek.
Bagian
propertyDefinitions
adalah tempat Anda menentukan properti suatu objek, seperti judul dan tanggal rilis film.
Cuplikan berikut menunjukkan objek movie
dengan dua properti: movieTitle
dan releaseDate
.
{
"objectDefinitions": [
{
"name": "movie",
"propertyDefinitions": [
{
"name": "movieTitle",
"isReturnable": true,
"isWildcardSearchable": 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"
}
},
"displayOptions": {
"displayLabel": "Release date"
}
...
]
}
]
}
PropertyDefinition terdiri dari beberapa item berikut:
- string
name
. - Daftar opsi jenis agnostik, seperti
isReturnable
dalam cuplikan sebelumnya. - Jenis dan opsi khusus jenis terkait, seperti
textPropertyOptions
danretrievalImportance
dalam cuplikan sebelumnya. operatorOptions
yang menjelaskan penggunaan properti sebagai operator penelusuran.- Satu atau beberapa
displayOptions
, sepertidisplayLabel
dalam cuplikan sebelumnya.
name
properti harus bersifat unik dalam objek yang berisi properti tersebut, tetapi nama yang sama dapat digunakan di objek dan sub-objek lainnya.
Pada Gambar 1, judul dan tanggal rilis film telah ditentukan dua kali:
sekali dalam objek movie
dan sekali lagi dalam sub-objek filmography
dari
objek person
. Skema ini menggunakan kembali kolom movieTitle
sehingga skema tersebut dapat mendukung dua jenis perilaku penelusuran:
- Menampilkan hasil film saat pengguna menelusuri judul film.
- Menampilkan hasil orang saat pengguna menelusuri judul film yang dimainkan oleh seorang aktor.
Demikian pula, skema menggunakan kembali kolom releaseDate
karena memiliki makna yang sama untuk dua kolom movieTitle
.
Dalam mengembangkan skema Anda, pertimbangkan bagaimana repositori Anda mungkin memiliki kolom terkait yang berisi data yang ingin dinyatakan lebih dari sekali dalam skema Anda.
Menambahkan opsi jenis agnostik
PropertyDefinition mencantumkan opsi fungsi penelusuran umum yang biasa digunakan untuk semua properti terlepas dari jenis datanya.
isReturnable
- Menunjukkan apakah properti mengidentifikasi data yang harus ditampilkan dalam hasil penelusuran melalui Query API. Semua contoh properti film dapat dikembalikan. Properti yang tidak dapat ditampilkan dapat digunakan untuk menelusuri atau memberi peringkat hasil tanpa ditampilkan kepada pengguna.isRepeatable
- Menunjukkan apakah beberapa nilai diizinkan untuk properti tertentu. Misalnya, suatu film hanya memiliki satu tanggal rilis tetapi dapat memiliki beberapa aktor.isSortable
- Menunjukkan bahwa properti dapat digunakan untuk penyortiran. Opsi ini tidak boleh bernilai true untuk properti yang dapat diulang. Misalnya, hasil film dapat diurutkan berdasarkan tanggal rilis atau rating audiens.isFacetable
- Menunjukkan bahwa properti dapat digunakan untuk menghasilkan faset. Faset digunakan untuk mempersempit hasil penelusuran ketika pengguna melihat hasil awal kemudian menambahkan kriteria, atau faset, guna lebih mempersempit hasil tersebut. Opsi ini tidak boleh bernilai true untuk properti yang jenisnya berupa objek danisReturnable
harus bernilai true untuk menetapkan opsi ini. Terakhir, opsi ini hanya didukung untuk properti enumerasi, boolean, dan teks. Misalnya, dalam skema sampel, kita dapat membuatgenre
,actorName
,userRating
, danmpaaRating
agar dapat difilter untuk digunakan pada penyempitan hasil penelusuran yang interaktif.isWildcardSearchable
menunjukkan bahwa pengguna dapat melakukan penelusuran karakter pengganti untuk properti ini. Opsi ini hanya tersedia di properti teks. Cara kerja penelusuran karakter pengganti di kolom teks bergantung pada nilai yang ditetapkan di kolom exactMatchWithOperator. JikaexactMatchWithOperator
ditetapkan ketrue
, nilai teks akan ditokenisasi sebagai satu nilai atom dan penelusuran karakter pengganti akan dilakukan terhadapnya. Misalnya, jika nilai teks adalahscience-fiction
, kueri karakter penggantiscience-*
akan cocok dengannya. JikaexactMatchWithOperator
disetel kefalse
, nilai teks akan ditokenisasi dan penelusuran karakter pengganti akan dilakukan terhadap setiap token. Misalnya, jika nilai teksnya adalah "science-fiction", kueri karakter penggantisci*
ataufi*
cocok dengan item, tetapiscience-*
tidak cocok.
Parameter fungsi penelusuran umum ini merupakan nilai boolean; semuanya memiliki nilai default false
dan harus ditetapkan ke true
agar dapat digunakan.
Tabel berikut menunjukkan parameter boolean yang ditetapkan ke true
untuk semua properti objek movie
:
Properti | isReturnable |
isRepeatable |
isSortable |
isFacetable |
isWildcardSearchable |
---|---|---|---|---|---|
movieTitle |
true | true | |||
releaseDate |
true | true | |||
genre |
true | true | true | ||
duration |
true | ||||
actorName |
true | true | true | true | |
userRating |
true | true | |||
mpaaRating |
true | true |
genre
dan actorName
menetapkan isRepeatable
ke true
karena film mungkin memiliki lebih dari satu genre dan biasanya memiliki
lebih dari satu aktor. Properti tidak dapat diurutkan jika berulang atau berada pada sub-objek berulang.
Menentukan jenis
Bagian referensi
PropertyDefinition
mencantumkan beberapa xxPropertyOptions
dengan xx
adalah jenis tertentu,
seperti boolean
. Untuk menetapkan jenis data properti, Anda harus menentukan objek jenis data yang sesuai. Menentukan objek jenis data untuk properti akan menetapkan jenis data dari properti tersebut. Misalnya, menentukan
textPropertyOptions
untuk properti movieTitle
menunjukkan bahwa judul
film berjenis teks. Cuplikan berikut menunjukkan properti movieTitle
dengan textPropertyOptions
yang menetapkan jenis datanya.
{
"name": "movieTitle",
"isReturnable": true,
"isWildcardSearchable": true,
"textPropertyOptions": {
...
},
...
},
Suatu properti mungkin hanya memiliki satu jenis data terkait. Misalnya, dalam skema
film kami, releaseDate
hanya dapat berupa tanggal (misalnya, 2016-01-13
) atau string
(misalnya, January 13, 2016
), tetapi tidak keduanya.
Berikut ini adalah objek jenis data yang digunakan untuk menentukan jenis data untuk properti dalam skema film sampel:
Properti | Objek jenis data |
---|---|
movieTitle |
textPropertyOptions |
releaseDate |
datePropertyOptions |
genre |
enumPropertyOptions |
duration |
textPropertyOptions |
actorName |
textPropertyOptions |
userRating |
integerPropertyOptions |
mpaaRating |
textPropertyOptions |
Jenis data yang Anda pilih untuk properti bergantung pada kasus penggunaan yang diharapkan.
Pada gambaran skenario tentang skema film ini, pengguna diharapkan ingin mengurutkan hasil secara kronologis, sehingga releaseDate
adalah objek tanggal.
Misalnya, jika ada kasus penggunaan yang diharapkan untuk membandingkan rilis bulan Desember sepanjang tahun dengan rilis bulan Januari, format string mungkin akan berguna.
Mengonfigurasi opsi khusus jenis
Bagian referensi PropertyDefinition menghubungkan ke opsi untuk setiap jenis. Sebagian besar opsi khusus jenis bersifat opsional, kecuali daftar possibleValues
dalam enumPropertyOptions
. Selain itu, opsi orderedRanking
memungkinkan Anda memberi peringkat nilai yang bersifat relatif satu sama lain. Cuplikan berikut menunjukkan properti movieTitle
dengan textPropertyOptions
yang menetapkan jenis data dan dengan opsi khusus jenis retrievalImportance
.
{
"name": "movieTitle",
"isReturnable": true,
"isWildcardSearchable": true,
"textPropertyOptions": {
"retrievalImportance": { "importance": "HIGHEST" },
...
},
...
}
Berikut ini adalah opsi khusus jenis tambahan yang digunakan dalam skema sampel:
Properti | Jenis | Opsi khusus jenis |
---|---|---|
movieTitle |
textPropertyOptions |
retrievalImportance |
releaseDate |
datePropertyOptions |
|
genre |
enumPropertyOptions |
|
duration |
textPropertyOptions |
|
actorName |
textPropertyOptions |
|
userRating |
integerPropertyOptions |
orderedRanking , maximumValue |
mpaaRating |
textPropertyOptions |
Menentukan opsi operator
Selain opsi khusus jenis, setiap jenis memiliki serangkaian operatorOptions
opsional. Opsi ini menjelaskan penggunaan properti sebagai operator penelusuran. Cuplikan berikut menunjukkan properti movieTitle
dengan
textPropertyOptions
yang menetapkan jenis data dan dengan
opsi khusus jenis retrievalImportance
dan operatorOptions
.
{
"name": "movieTitle",
"isReturnable": true,
"isWildcardSearchable": true,
"textPropertyOptions": {
"retrievalImportance": { "importance": "HIGHEST" },
"operatorOptions": {
"operatorName": "title"
}
},
...
}
Setiap operatorOptions
memiliki operatorName
, seperti title
untuk
movieTitle
. Nama operator merupakan operator penelusuran untuk properti. Operator penelusuran adalah parameter aktual yang Anda harapkan untuk digunakan pengguna saat mempersempit penelusuran. Misalnya, untuk menelusuri film berdasarkan judulnya, pengguna akan mengetik title:movieName
, dengan movieName
adalah nama film.
Nama operator tidak harus sama dengan nama properti. Namun, Anda harus menggunakan nama operator yang mencerminkan kata-kata paling umum yang digunakan oleh pengguna di organisasi Anda. Misalnya, jika pengguna lebih memilih istilah "nama" daripada "judul" untuk judul film, nama operator harus ditetapkan ke "nama".
Anda dapat menggunakan nama operator yang sama untuk beberapa properti selama semua properti dapat diselesaikan dengan jenis yang sama. Saat menggunakan nama operator bersama selama pembuatan kueri, semua properti yang menggunakan nama operator tersebut akan diambil. Misalnya,
objek film memiliki properti plotSummary
dan plotSynopsis
dan setiap properti ini memiliki operatorName
dari plot
. Selama kedua properti tersebut bernilai teks (textPropertyOptions
), satu kueri yang menggunakan operator penelusuran plot
akan mengambil keduanya.
Selain operatorName
, properti yang dapat diurutkan dapat memiliki
kolom lessThanOperatorName
dan greaterThanOperatorName
di operatorOptions
.
Pengguna dapat menggunakan opsi tersebut untuk membuat kueri berdasarkan perbandingan dengan nilai yang dikirimkan.
Terakhir, textOperatorOptions
memiliki kolom exactMatchWithOperator
di operatorOptions
. Jika Anda menetapkan exactMatchWithOperator
ke true
, string kueri harus cocok dengan seluruh nilai properti, bukan hanya ditemukan dalam teks.
Nilai teks diperlakukan sebagai satu nilai atom pada penelusuran operator dan pencocokan faset.
Misalnya, pertimbangkan untuk mengindeks objek Buku atau Film dengan properti genre.
Genre dapat mencakup "Science-Fiction", "Science", dan "Fiction". Dengan
exactMatchWithOperator
ditetapkan ke false
atau dihilangkan,
menelusuri genre atau
memilih aspek "Science" atau "Fiction" juga akan
menampilkan hasil untuk "Science-Fiction" karena teks ditokenisasi dan
token "Science" dan "Fiction" ada di "Science-Fiction".
Jika exactMatchWithOperator
adalah true
,
teks diperlakukan sebagai token tunggal, sehingga
"Science" maupun "Fiction" tidak cocok dengan "Science-Fiction".
(Opsional) Menambahkan bagian displayOptions
Ada bagian displayOptions
opsional di akhir bagian
propertyDefinition
. Bagian ini berisi satu string displayLabel
.
displayLabel
adalah label teks yang direkomendasikan dan mudah digunakan untuk properti. Jika properti dikonfigurasi untuk tampilan menggunakan ObjectDisplayOptions, label ini akan ditampilkan di depan properti. Jika properti dikonfigurasi untuk tampilan dan displayLabel
tidak ditentukan, hanya nilai properti yang akan ditampilkan.
Cuplikan berikut menunjukkan properti movieTitle
dengan displayLabel
ditetapkan ke 'Judul'.
{
"name": "movieTitle",
"isReturnable": true,
"isWildcardSearchable": true,
"textPropertyOptions": {
"retrievalImportance": { "importance": "HIGHEST" },
"operatorOptions": {
"operatorName": "title"
}
},
"displayOptions": {
"displayLabel": "Title"
}
},
Berikut adalah nilai displayLabel
untuk semua properti objek movie
dalam skema sampel:
Properti | displayLabel |
---|---|
movieTitle |
Title |
releaseDate |
Release date |
genre |
Genre |
duration |
Run length |
actorName |
Actor |
userRating |
Audience score |
mpaaRating |
MPAA rating |
(Opsional) Menambahkan bagian suggestionFilteringOperators[]
Ada bagian
suggestionFilteringOperators[]
opsional di akhir bagian propertyDefinition
. Gunakan bagian ini untuk
menentukan properti yang digunakan untuk memfilter saran pelengkapan otomatis. Misalnya, Anda
dapat menentukan operator genre
untuk memfilter saran berdasarkan genre
film pilihan pengguna. Kemudian, saat pengguna mengetik kueri penelusuran, hanya
film yang cocok dengan genre pilihan mereka yang ditampilkan sebagai bagian dari saran
pelengkapan otomatis.
Mendaftarkan skema
Agar data terstruktur ditampilkan dari kueri Cloud Search, Anda harus mendaftarkan skema dengan layanan skema Cloud Search. Pendaftaran skema memerlukan ID sumber data yang Anda peroleh saat melakukan langkah Menginisialisasi sumber data.
Dengan menggunakan ID sumber data, kirimkan permintaan UpdateSchema untuk mendaftarkan skema.
Seperti yang dijelaskan pada halaman referensi UpdateSchema, kirimkan permintaan HTTP berikut untuk mendaftarkan skema:
PUT https://cloudsearch.googleapis.com/v1/indexing/{name=datasources/*}/schema
Isi permintaan harus berisi seperti yang berikut ini:
{ "validateOnly": // true or false, "schema": { // ... Your complete schema object ... } }
Gunakan opsi validateOnly
untuk menguji validitas skema tanpa benar-benar mendaftarkannya.
Mengindeks data
Setelah skema terdaftar, isi sumber data menggunakan panggilan Indeks . Pengindeksan biasanya dilakukan dalam konektor konten.
Dengan menggunakan skema film, permintaan pengindeksan REST API untuk satu film akan terlihat seperti ini:
{
"name": "datasource/<data_source_id>/items/titanic",
"acl": {
"readers": [
{
"gsuitePrincipal": {
"gsuiteDomain": true
}
}
]
},
"metadata": {
"title": "Titanic",
"sourceRepositoryUrl": "http://www.imdb.com/title/tt2234155/?ref_=nv_sr_1",
"objectType": "movie"
},
"structuredData": {
"object": {
"properties": [
{
"name": "movieTitle",
"textValues": {
"values": [
"Titanic"
]
}
},
{
"name": "releaseDate",
"dateValues": {
"values": [
{
"year": 1997,
"month": 12,
"day": 19
}
]
}
},
{
"name": "actorName",
"textValues": {
"values": [
"Leonardo DiCaprio",
"Kate Winslet",
"Billy Zane"
]
}
},
{
"name": "genre",
"enumValues": {
"values": [
"Drama",
"Action"
]
}
},
{
"name": "userRating",
"integerValues": {
"values": [
8
]
}
},
{
"name": "mpaaRating",
"textValues": {
"values": [
"PG-13"
]
}
},
{
"name": "duration",
"textValues": {
"values": [
"3 h 14 min"
]
}
}
]
}
},
"content": {
"inlineContent": "A seventeen-year-old aristocrat falls in love with a kind but poor artist aboard the luxurious, ill-fated R.M.S. Titanic.",
"contentFormat": "TEXT"
},
"version": "01",
"itemType": "CONTENT_ITEM"
}
Perhatikan kecocokan nilai movie
di kolom objectType
dengan nama definisi objek dalam skema. Dengan mencocokkan kedua nilai tersebut, Cloud Search akan mengetahui objek skema mana yang akan digunakan selama pengindeksan.
Perhatikan juga cara pengindeksan properti skema releaseDate
menggunakan
sub-properti year
, month
, dan day
yang diwarisi karena properti tersebut ditentukan sebagai jenis data date
melalui penggunaan datePropertyOptions
untuk menentukannya.
Namun, karena year
, month
, dan day
tidak ditentukan dalam skema, Anda tidak dapat membuat kueri pada salah satu properti tersebut (misalnya, year
) satu per satu.
Selain itu, perhatikan cara properti berulang actorName
diindeks menggunakan daftar nilai.
Mengidentifikasi potensi masalah pengindeksan
Dua masalah paling umum terkait skema dan pengindeksan adalah:
Permintaan pengindeksan berisi objek skema atau nama properti yang tidak terdaftar dengan layanan skemanya. Jika masalah ini terjadi, properti atau objek akan diabaikan.
Permintaan pengindeksan berisi properti dengan nilai jenis yang berbeda dengan jenis yang terdaftar dalam skema. Jika masalah ini terjadi, Cloud Search akan menampilkan error saat pengindeksan.
Menguji skema dengan beberapa jenis kueri
Sebelum mendaftarkan skema ke repositori data produksi berukuran besar, lakukan pengujian dengan repositori data uji yang lebih kecil. Dengan melakukan pengujian pada repositori uji yang lebih kecil, Anda dapat dengan cepat membuat penyesuaian pada skema dan menghapus data yang diindeks, tanpa memengaruhi indeks yang lebih besar atau indeks produksi yang ada. Untuk repositori data uji, buat ACL yang hanya mengotorisasi pengguna uji sehingga pengguna lain tidak akan melihat data ini di hasil Penelusuran.
Untuk membuat antarmuka penelusuran agar dapat memvalidasi kueri penelusuran, lihat Antarmuka penelusuran
Bagian ini berisi beberapa contoh kueri yang berbeda yang dapat digunakan untuk menguji skema film.
Melakukan pengujian dengan kueri umum
Kueri umum menampilkan semua item dalam sumber data yang berisi string tertentu. Dengan menggunakan antarmuka penelusuran, Anda dapat menjalankan kueri umum terkait sumber data film dengan mengetikkan kata "titanic" lalu menekan Tampilkan. Semua film dengan kata "titanic" akan ditampilkan di hasil penelusuran.
Melakukan pengujian dengan operator
Menambahkan operator ke kueri akan membatasi hasil pada item yang cocok dengan nilai operator tersebut. Misalnya, Anda ingin menggunakan operator actor
untuk menemukan semua film yang dibintangi aktor tertentu. Dengan menggunakan antarmuka penelusuran, Anda dapat menjalankan kueri operator ini hanya dengan mengetikkan pasangan operator=value, seperti "actor:Zane", lalu menekan Tampilkan. Semua film yang dibintangi oleh Zane akan ditampilkan pada hasil penelusuran.
Menyesuaikan skema
Setelah menggunakan skema dan data, terus pantau skema yang berhasil dan tidak bagi pengguna. Sesuaikan skema jika terjadi situasi berikut:
- Pengindeksan kolom yang sebelumnya tidak diindeks. Misalnya, pengguna sering melakukan penelusuran film berdasarkan nama sutradara, jadi sesuaikan skema dengan menjadikan nama sutradara sebagai operator.
- Perubahan nama operator penelusuran berdasarkan masukan pengguna. Nama operator seharusnya menggunakan nama yang mudah digunakan. Jika pengguna terus "mengingat" nama operator yang salah, sebaiknya ubah nama operator tersebut.
Melakukan pengindeksan ulang setelah perubahan skema
Anda tidak harus melakukan pengindeksan ulang data jika mengubah salah satu dari nilai berikut dalam skema. Cukup kirimkan permintaan UpdateSchema baru dan indeks Anda akan tetap berfungsi:
- Nama operator.
- Nilai bilangan bulat minimum dan maksimum.
- Peringkat bilangan bulat dan enumerasi secara berurutan.
- Opsi keaktualan.
- Opsi tampilan.
Untuk perubahan berikut, data yang sebelumnya diindeks akan tetap berfungsi sesuai dengan skema yang terdaftar sebelumnya. Namun, Anda harus melakukan pengindeksan ulang pada entri yang ada untuk melihat perubahan berdasarkan skema yang diupdate jika terjadi perubahan berikut:
- Penambahan atau penghapusan properti atau objek baru
- Mengubah
isReturnable
,isFacetable
, atauisSortable
darifalse
menjaditrue
.
Anda harus menetapkan isFacetable
atau isSortable
menjadi true
hanya jika memiliki
kasus dan kebutuhan penggunaan yang jelas.
Terakhir, saat memperbarui skema dengan menandai properti isSuggestable
,
Anda harus mengindeks ulang data yang menyebabkan penundaan penggunaan pelengkapan otomatis untuk
properti tersebut.
Perubahan properti yang tidak diizinkan
Meskipun Anda telah mengindeks ulang data, beberapa perubahan skema tidak diizinkan karena perubahan tersebut akan merusak indeks atau menampilkan hasil penelusuran yang buruk atau tidak konsisten. Perubahan tersebut meliputi:
- Jenis data properti.
- Nama properti.
- Setelan
exactMatchWithOperator
. - Setelan
retrievalImportance
.
Namun, ada cara untuk mengatasi batasan ini.
Membuat perubahan skema yang kompleks
Untuk menghindari perubahan yang dapat menampilkan hasil penelusuran yang buruk atau indeks penelusuran yang rusak, Cloud Search mencegah beberapa jenis perubahan pada permintaan UpdateSchema setelah repositori diindeks. Misalnya, jenis data atau nama properti tidak dapat diubah setelah ditetapkan. Perubahan tersebut tidak dapat dilakukan melalui permintaan UpdateSchema sederhana, meskipun Anda telah mengindeks ulang data.
Jika harus membuat perubahan yang tidak diizinkan pada skema, Anda dapat membuat serangkaian perubahan yang diizinkan agar dapat mencapai efek yang sama. Secara umum, pertama-tama migrasikan properti yang diindeks dari definisi objek lama ke yang baru, lalu kirimkan permintaan pengindeksan yang hanya menggunakan properti yang lebih baru.
Langkah-langkah berikut menunjukkan cara mengubah jenis data atau nama properti:
- Tambahkan properti baru ke definisi objek dalam skema. Gunakan nama yang berbeda dari properti yang ingin diubah.
- Kirimkan permintaan UpdateSchema dengan definisi yang baru. Jangan lupa untuk mengirim keseluruhan skema, termasuk properti baru dan lama, dalam permintaan tersebut.
Isi ulang indeks dari repositori data. Untuk mengisi ulang indeks, kirim semua permintaan pengindeksan menggunakan properti baru. Jangan sertakan properti lama karena akan menyebabkan pencocokan kueri ganda.
- Selama pengisian ulang indeks, periksa properti baru dan jadikan properti lama sebagai default untuk menghindari perilaku yang tidak konsisten.
- Setelah pengisian ulang selesai, jalankan kueri pengujian untuk memverifikasi.
Hapus properti lama. Kirimkan permintaan UpdateSchema lainnya tanpa menyertakan nama properti lama dan hentikan penggunaan nama properti lama pada permintaan pengindeksan selanjutnya.
Migrasikan semua penggunaan properti lama ke properti baru. Misalnya, jika nama properti diubah dari pembuat menjadi penulis, Anda harus memperbarui kode kueri menjadi penulis yang sebelumnya merujuk pada pembuat.
Cloud Search tetap menyimpan record dari semua properti atau objek yang dihapus selama 30 hari untuk melindungi dari penggunaan kembali yang dapat menyebabkan hasil pengindeksan yang tidak diharapkan. Selama 30 hari tersebut, Anda harus memigrasikan semua penggunaan objek atau properti yang dihapus, termasuk menghapusnya dari permintaan indeks selanjutnya. Hal ini dilakukan agar jika selanjutnya properti atau objek tersebut diaktifkan kembali, Anda dapat melakukannya dengan tetap menjaga ketepatan indeks Anda.
Mengetahui batasan ukuran
Cloud Search memberlakukan batasan pada skema dan objek data terstruktur. Berikut batasannya:
- Jumlah maksimum objek tingkat atas adalah 10 objek.
- Kedalaman maksimum hierarki data terstruktur adalah 10 level.
- Jumlah total kolom pada suatu objek dibatasi maksimal 1.000, yang mencakup jumlah kolom primitif dan jumlah kolom dalam setiap objek bertingkat.
Langkah Berikutnya
Berikut ini beberapa langkah selanjutnya yang dapat Anda lakukan:
Buat antarmuka penelusuran untuk menguji skema.
Sesuaikan skema untuk meningkatkan kualitas penelusuran.
Buat struktur skema untuk mendapatkan interpretasi kueri yang optimal.
Pelajari cara memanfaatkan skema
_dictionaryEntry
guna menentukan sinonim untuk istilah yang umum digunakan di perusahaan Anda. Untuk menggunakan skema_dictionaryEntry
, lihat Menentukan sinonim.Buat konektor.