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
- Melengkapi skema contoh
- Mendaftarkan skema Anda
- 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 jika salah satu properti Anda mewakili properti konteks di mana penelusuran dapat dilakukan, seperti permintaan peran pekerjaan atau departemen Anda, sehingga saran pelengkapan otomatis dapat diberikan berdasarkan konteks tambahan. Misalnya, untuk orang yang menelusuri {i>database<i} film, pengguna mungkin hanya tertarik pada genre film tertentu. Pengguna akan mendefinisikan apa genre yang mereka inginkan agar penelusuran mereka kembali, mungkin sebagai bagian dari pengguna mereka untuk profil. Kemudian, ketika pengguna mulai mengetik kueri film, film khusus yang sesuai dengan genre yang mereka inginkan, misalnya "film aksi”, disarankan sebagai bagian dari saran pelengkapan otomatis.
- Buat daftar objek, properti, dan nilai contoh tersebut yang dapat digunakan dalam penelusuran. (Untuk detail tentang bagaimana 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 mendapatkan petunjuk tentang cara melakukan inisialisasi sumber data, rujuk ke 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 {i>database<i} film, satu struktur data yang logis adalah "film." Objek lain mungkin adalah "orang" dapat mewakili para 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 adalah
pada dasarnya 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 memberikan name
untuk objek yang harus
unik di antara semua objek lain dalam skema. Biasanya Anda akan menggunakan name
nilai yang mendeskripsikan objek, seperti movie
untuk objek film. Skema
menggunakan kolom name
sebagai ID kunci untuk objek yang dapat diindeks. Sebagai
informasi selengkapnya tentang kolom name
, lihat
Definisi Objek.
Menentukan properti objek
Sebagaimana ditentukan dalam
referensi untuk
ObjectDefinition,
nama objek diikuti dengan serangkaian
options
,
dan daftar
propertyDefinitions
Tujuan
options
dapat
selanjutnya terdiri dari
freshnessOptions
dan
displayOptions
.
Tujuan
freshnessOptions
digunakan untuk menyesuaikan peringkat penelusuran berdasarkan keaktualan item. Tujuan
displayOptions
digunakan untuk menentukan apakah label
dan properti tertentu ditampilkan dalam
hasil pencarian untuk suatu objek.
Tujuan
propertyDefinitions
adalah tempat Anda menentukan properti suatu objek, seperti judul film
dan tanggal rilis.
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 versi sebelumnya cuplikan kode. - Jenis dan opsi khusus jenis yang terkait,
seperti
textPropertyOptions
danretrievalImportance
dalam cuplikan sebelumnya. operatorOptions
yang menjelaskan cara properti digunakan sebagai operator penelusuran.- Satu atau beberapa
displayOptions
, sepertidisplayLabel
di cuplikan sebelumnya.
name
properti harus unik dalam objek penampungnya,
tetapi nama yang sama dapat digunakan
di objek dan sub-objek lain.
Pada Gambar 1, judul dan tanggal rilis film telah ditentukan dua kali:
sekali di objek movie
dan sekali lagi di sub-objek filmography
dari
Objek person
. Skema ini menggunakan kembali kolom movieTitle
sehingga skema 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
arti keduanya untuk kedua 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 seharusnya yang ditampilkan di hasil penelusuran melalui Query API. Semua contoh film properti dapat ditampilkan. 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. Misalnya, suatu film hanya memiliki satu tanggal rilis tetapi dapat memiliki beberapa aktor.isSortable
- Menunjukkan bahwa properti dapat digunakan untuk pengurutan. 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 benar untuk properti dengan jenis objek danisReturnable
harus bernilai benar (true) untuk menetapkan opsi ini. Terakhir, opsi ini hanya didukung untuk properti enumerasi, boolean, dan teks. Misalnya, dalam skema sampel kita, kita mungkin membuat Dapat dilihatgenre
,actorName
,userRating
, danmpaaRating
agar keduanya dapat digunakan untuk penajaman hasil penelusuran interaktif.isWildcardSearchable
menunjukkan bahwa pengguna dapat melakukan penelusuran karakter pengganti untuk properti ini. Opsi ini hanya tersedia pada properti teks. Cara penggunaan karakter pengganti yang berfungsi di kolom teks bergantung pada nilai yang disetel di kolom exactMatchWithOperator. JikaexactMatchWithOperator
disetel ketrue
, nilai teks ditokenkan sebagai satu nilai atomik dan pencarian karakter pengganti yang dilakukan terhadapnya. Misalnya, jika nilai teks adalahscience-fiction
, kueri {i>wildcard <i}science-*
{i> <i}cocok dengannya. JikaexactMatchWithOperator
disetel kefalse
, nilai teks ditokenkan dan penelusuran karakter pengganti dilakukan setiap token. Misalnya, jika nilai teks adalah "science-fiksi", karakter pengganti kuerisci*
ataufi*
cocok dengan item, tetapiscience-*
tidak cocok.
Semua parameter fungsi penelusuran umum ini berupa nilai boolean; mereka
semua memiliki nilai default false
dan harus ditetapkan ke true
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
memiliki isRepeatable
yang ditetapkan ke true
karena sebuah film mungkin termasuk dalam
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
Tujuan
PropertyDefinition
bagian referensi 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 film
judul adalah jenis teks. Cuplikan berikut menunjukkan properti movieTitle
dengan textPropertyOptions
yang menetapkan jenis data.
{
"name": "movieTitle",
"isReturnable": true,
"isWildcardSearchable": true,
"textPropertyOptions": {
...
},
...
},
Suatu properti mungkin hanya memiliki satu jenis data terkait. Misalnya, di film kita
skema, releaseDate
hanya boleh berupa tanggal (mis., 2016-01-13
) atau string
(mis., 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.
Dalam skenario yang dibayangkan{i> <i}dari 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. Paling spesifik jenis
opsi bersifat opsional, kecuali daftar possibleValues
dalam
enumPropertyOptions
. Selain itu, opsi orderedRanking
memungkinkan Anda
nilai peringkat relatif terhadap satu sama lain. Tujuan
cuplikan berikut menampilkan properti movieTitle
dengan textPropertyOptions
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 kumpulan
operatorOptions
Opsi ini menjelaskan cara properti digunakan 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,
anggaplah objek film memiliki plotSummary
dan plotSynopsis
dan setiap properti ini memiliki operatorName
dari plot
. Sebagai
selama kedua properti ini adalah teks (textPropertyOptions
), satu
kueri 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
setel exactMatchWithOperator
ke true
, string kueri harus
cocok dengan seluruh nilai properti, tidak 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 salah satu "Sains" atau "Fiksi" facet juga akan
tampilkan hasil untuk "Fiksi Ilmiah" saat teks ditokenkan dan
"Sains" dan "Fiksi" token yang ada di "Science-Fiction".
Jika exactMatchWithOperator
adalah true
,
teks diperlakukan sebagai token tunggal, jadi tidak
"Sains" atau "Fiksi" cocok dengan "Science-Fiction".
(Opsional) Tambahkan bagian displayOptions
Ada bagian displayOptions
opsional di akhir setiap
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 ditampilkan di depan properti. Jika properti dikonfigurasi
untuk tampilan dan displayLabel
tidak ditentukan, hanya nilai properti yang
ditampilkan.
Cuplikan berikut menunjukkan properti movieTitle
dengan displayLabel
tetapkan 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 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) Tambahkan bagian suggestionFilteringOperators[]
Terdapat
suggestionFilteringOperators[]
di akhir bagian propertyDefinition
mana pun. Gunakan bagian ini untuk
menentukan properti yang digunakan untuk memfilter saran pelengkapan otomatis. Sebagai contoh, Anda
mungkin menentukan operator genre
untuk memfilter saran berdasarkan
genre film yang disukai. Kemudian, ketika pengguna mengetik kueri penelusuran, hanya kueri
film yang cocok dengan genre pilihan mereka akan ditampilkan sebagai bagian dari pelengkapan otomatis
ejaan atau mendapatkan saran gaya.
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
dengan 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 bagaimana nilai movie
di kolom objectType
cocok dengan 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 yang digunakan releaseDate
sub-properti year
, month
, dan day
yang diwarisinya karena
didefinisikan sebagai jenis data date
melalui penggunaan datePropertyOptions
untuk menentukannya.
Namun, karena year
, month
, dan day
tidak ditentukan dalam skema, Anda
tidak dapat membuat kueri untuk salah satu properti tersebut (mis., year
) satu per satu.
Perhatikan juga cara properti berulang actorName
diindeks menggunakan daftar
masing-masing.
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 mungkin ingin menggunakan
operator actor
untuk menemukan
semua film yang dibintangi aktor tertentu. Menggunakan antarmuka penelusuran, Anda dapat melakukan
kueri operator ini cukup dengan mengetikkan pasangan operator=value, seperti
"actor:Zane", lalu menekan tombol "actor:Zane". 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. Anda cukup mengirimkan UpdateSchema 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 Anda memiliki
kasus penggunaan dan kebutuhan
yang jelas.
Terakhir, saat Anda memperbarui skema dengan menandai properti isSuggestable
,
Anda harus mengindeks ulang data Anda yang menyebabkan penundaan dalam 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 ini tidak dapat dicapai melalui UpdateSchema permintaan, bahkan jika Anda mengindeks ulang data Anda.
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
untuk ditentukan sinonim untuk istilah yang biasa digunakan di perusahaan Anda. Untuk menggunakan_dictionaryEntry
skema, lihat Menentukan sinonim.Buat konektor.