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. Skema contoh lengkap
  5. Mendaftarkan skema
  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 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.
  7. 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.

Gambar koneksi skema antar-entity
Gambar 1. Skema contoh yang menampilkan dua objek dan satu sub-objek.

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 dan retrievalImportance dalam cuplikan sebelumnya.
  • operatorOptions yang menjelaskan penggunaan properti sebagai operator penelusuran.
  • Satu atau beberapa displayOptions, seperti displayLabel 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 dan isReturnable harus bernilai true untuk menetapkan opsi ini. Terakhir, opsi ini hanya didukung untuk properti enumerasi, boolean, dan teks. Misalnya, dalam skema sampel, kita dapat membuat genre, actorName, userRating, dan mpaaRating 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. Jika exactMatchWithOperator ditetapkan ke true, nilai teks akan ditokenisasi sebagai satu nilai atom dan penelusuran karakter pengganti akan dilakukan terhadapnya. Misalnya, jika nilai teks adalah science-fiction, kueri karakter pengganti science-* akan cocok dengannya. Jika exactMatchWithOperator disetel ke false, nilai teks akan ditokenisasi dan penelusuran karakter pengganti akan dilakukan terhadap setiap token. Misalnya, jika nilai teksnya adalah "science-fiction", kueri karakter pengganti sci* atau fi* cocok dengan item, tetapi science-* 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, atau isSortable dari false menjadi true.

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:

  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 guna menentukan sinonim untuk istilah yang umum digunakan di perusahaan Anda. Untuk menggunakan skema _dictionaryEntry, lihat Menentukan sinonim.

  5. Buat konektor.