Membuat dan mendaftarkan skema

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:

  1. Mengidentifikasi perilaku pengguna yang diharapkan
  2. Melakukan inisialisasi sumber data
  3. Membuat skema
  4. Melengkapi skema contoh
  5. Mendaftarkan skema Anda
  6. Mengindeks data
  7. Menguji skema
  8. 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:

  1. Evaluasi beragam set kueri yang diinginkan dari pengguna yang berbeda.
  2. Identifikasi objek yang mungkin digunakan dalam kueri. Objek adalah set logis dari data terkait, seperti film dalam database film.
  3. 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.
  4. 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".
  5. 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.
  6. (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.
  7. 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.

Gambar koneksi skema antar-entity
Gambar 1. Skema sampel yang menunjukkan dua objek dan sub-objek.

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 dan retrievalImportance dalam cuplikan sebelumnya.
  • operatorOptions yang menjelaskan cara properti digunakan sebagai operator penelusuran.
  • Satu atau beberapa displayOptions, seperti displayLabel 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 dan isReturnable 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 dilihat genre, actorName, userRating, dan mpaaRating 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. Jika exactMatchWithOperator disetel ke true, nilai teks ditokenkan sebagai satu nilai atomik dan pencarian karakter pengganti yang dilakukan terhadapnya. Misalnya, jika nilai teks adalah science-fiction, kueri {i>wildcard <i}science-*{i> <i}cocok dengannya. Jika exactMatchWithOperator disetel ke false, nilai teks ditokenkan dan penelusuran karakter pengganti dilakukan setiap token. Misalnya, jika nilai teks adalah "science-fiksi", karakter pengganti kueri sci* atau fi* cocok dengan item, tetapi science-* 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 &quot;actor:Zane&quot;, lalu menekan tombol &quot;actor:Zane&quot;. 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, atau isSortable dari false menjadi true.

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:

  1. Tambahkan properti baru ke definisi objek dalam skema. Gunakan nama yang berbeda dari properti yang ingin diubah.
  2. Kirimkan permintaan UpdateSchema dengan definisi yang baru. Jangan lupa untuk mengirim keseluruhan skema, termasuk properti baru dan lama, dalam permintaan tersebut.
  3. 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.

    1. Selama pengisian ulang indeks, periksa properti baru dan jadikan properti lama sebagai default untuk menghindari perilaku yang tidak konsisten.
    2. Setelah pengisian ulang selesai, jalankan kueri pengujian untuk memverifikasi.
  4. Hapus properti lama. Kirimkan permintaan UpdateSchema lainnya tanpa menyertakan nama properti lama dan hentikan penggunaan nama properti lama pada permintaan pengindeksan selanjutnya.

  5. 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:

  1. Buat antarmuka penelusuran untuk menguji skema.

  2. Sesuaikan skema untuk meningkatkan kualitas penelusuran.

  3. Buat struktur skema untuk mendapatkan interpretasi kueri yang optimal.

  4. Pelajari cara memanfaatkan Skema _dictionaryEntry untuk ditentukan sinonim untuk istilah yang biasa digunakan di perusahaan Anda. Untuk menggunakan _dictionaryEntry skema, lihat Menentukan sinonim.

  5. Buat konektor.