Membuat struktur skema untuk mendapatkan interpretasi kueri yang optimal

Fitur interpretasi kueri Cloud Search secara otomatis menginterpretasikan operator dan filter dalam kueri pengguna, serta mengonversi elemen tersebut menjadi kueri terstruktur berbasis operator. Interpretasi kueri menggunakan operator yang ditetapkan dalam skema, bersama dengan dokumen yang diindeks, untuk menyimpulkan maksud dari kueri pengguna. Dengan fitur ini, pengguna dapat melakukan penelusuran dengan kata kunci yang minimal, tetapi tetap mendapatkan hasil yang tepat.

Hasil aktual yang ditampilkan kepada pengguna bergantung pada keyakinan interpretasi kueri. Keyakinan didasarkan pada beberapa faktor, termasuk lokasi munculnya string kueri dalam dokumen yang diindeks. Sebuah {i>string<i}, seperti nama aktor "Tom Hanks," muncul secara konsisten dalam kolom skema yang disebut actors menghasilkan keyakinan yang lebih tinggi. String yang sama ("Tom Hanks") yang muncul dalam paragraf, bukan kolom skema, dapat menghasilkan keyakinan yang lebih rendah. Untuk keyakinan yang tinggi, hanya hasil dari interpretasi kueri yang ditampilkan kepada pengguna. Sedangkan untuk keyakinan yang lebih rendah, hasil dari interpretasi kueri digabung dengan hasil penelusuran kata kunci normal.

Contoh interpretasi kueri

Misalnya Anda memiliki sumber data, seperti database, yang berisi informasi tentang film. Gambar 1 menunjukkan contoh kueri penelusuran dan interpretasi yang dihasilkan.

Ringkasan interpretasi kueri
Gambar 1. Penafsiran kueri

Berdasarkan kueri contoh ini, interpretasi kueri melakukan hal berikut:

  • Mengurai skema dan menentukan bahwa objek level teratas dalam sumber data diklasifikasikan sebagai objecttype:movies. Kini interpretasi kueri mengetahui bahwa "movies" dalam kueri adalah jenis objek.

  • Memindai dokumen dalam sumber data, bersama dengan skema, untuk menentukan tempat munculnya string "action". Jika string terutama muncul dalam kolom sumber data "genre" tertentu, interpretasi kueri akan memiliki keyakinan bahwa "action" adalah nilai properti untuk properti "genre", seperti yang ditentukan dalam skema. Jika string terutama muncul dalam konteks paragraf konten, maka tingkat keyakinan interpretasi kueri akan menurun.

Interpretasi kueri yang dihasilkan adalah:

  actor:“tom hanks” genre:action objecttype:movies

Interpretasi kueri secara otomatis diaktifkan untuk semua pelanggan Cloud Search tanpa pekerjaan tambahan. Namun, untuk interpretasi kueri yang optimal, Anda harus membuat struktur skema yang sesuai dengan petunjuk dalam dokumen ini.

Membuat struktur skema Anda untuk mendukung interpretasi kueri

Anda harus membuat struktur skema untuk memastikan bahwa Anda bisa mendapat manfaat dari interpretasi kueri.

Mengaktifkan interpretasi nama tampilan

Penafsiran kueri Cloud Search menggunakan objectDefinitions dan propertyDefinitions dalam skema untuk menafsirkan kueri pengguna dan menyesuaikan hasil pengujian tersebut. Untuk memaksimalkan manfaat dari elemen skema ini, Anda harus membuat nama tampilan yang intuitif menggunakan displayLabel untuk nama properti, objectDisplayLabel untuk nama objek, dan operatorName untuk operator.

Skema berikut menampilkan nama tampilan yang intuitif untuk objek film:

{
  "objectDefinitions": [
    {
      "name": "movie",
        "options": {
          "displayOptions": {
          "objectDisplayLabel": "Films"
        }
        ...
      },
      "propertyDefinitions": [
        {
          "name": "genre",
          "isReturnable": true,
          "isRepeatable": true,
          "isFacetable": true,
          "textPropertyOptions": {
          "retrievalImportance": { "importance": "HIGHEST" },
          "operatorOptions": {
            "operatorName": "genre"
          }
        },
        "displayOptions": {
          "displayLabel": "Category"
        }
      },
      ...
      ]
    }
  ]
}

Pada contoh sebelumnya:

  • Definisi objek film memiliki objectDisplayLabel "Film".

  • Genre propertyDefinition memiliki operatorName “genre” dan “Category” displayLabel.

Nama tampilan ini mengaktifkan Cloud Search untuk membuat interpretasi kueri berikut:

  • "action movies", "genre action type movies", atau "movies genre action" ditafsirkan sebagai genre:action object:movies.
  • "film dengan aksi genre atau {i>thriller<i}” diartikan sebagai objecttype:movies genre:(action OR thriller).
  • "film laga" atau "film aksi" diartikan sebagai genre:action objecttype:movies.
  • “film kategori komedi” ditafsirkan sebagai genre:comedy objecttype:movies.

Mengaktifkan interpretasi tanggal, numerik, dan pengurutan

Anda harus menentukan lessThanOperatorName dan greaterThanOperatorName, ditentukan dalam IntegerOperatorOptions, untuk semua tanggal dan properti numerik. Setelan tersebut memungkinkan interpretasi tanggal dan numerik yang otomatis. Selain itu, untuk memungkinkan interpretasi pengurutan, menetapkan opsi isSortable untuk properti tanggal dan numerik. Skema berikut menunjukkan cara mengaktifkan opsi ini.

{
  "objectDefinitions": [
    {
      "options": {
        "displayOptions": {
          "objectDisplayLabel": "Films"
        }
      },
      "propertyDefinitions": [
        {
          "name": "runtime",
          "isReturnable": true,
          "isSortable": true,
          "integerPropertyOptions": {
            "orderedRanking": "DESCENDING",
            "minimumValue": {
              "value": 10
            },
            "maximumValue": {
              "value": 500
            },
            "operatorOptions": {
              "operatorName": "runtime",
              "lessThanOperatorName": "runtimelessthan",
              "greaterThanOperatorName": "runtimegreaterthan"
            }
          },
          "displayOptions": {
            "displayLabel": "Length"
          }
        },
        {
          "name": "releasedate",
          "isReturnable": true,
          "isSortable": true,
          "datePropertyOptions": {
            "operatorOptions": {
              "operatorName": "releasedate",
              "lessThanOperatorName": "releasedbefore",
              "greaterThanOperatorName": "releasedafter"
            }
          }
        }
      ]
    }
  ]
}

Pada contoh sebelumnya:

  • Properti numerik runtime mengacu pada panjang film. Tujuan runtimelessthan dan runtimegreaterthan ditetapkan untuk properti ini.
  • Properti tanggal releaseDate mengacu pada waktu film dirilis di bioskop. releasedbefore dan releasedafter ditetapkan untuk properti ini.

Setelan ini mengaktifkan Cloud Search untuk membuat interpretasi kueri berikut:

  • Dengan asumsi tahun ini adalah 2019, “film yang dirilis tahun ini” ditafsirkan sebagai objecttype: movies releasedafter:2019-1-1 releasedbefore:2019-12-31.
  • Dengan asumsi minggu ini adalah minggu ketiga bulan Maret, “film yang dirilis minggu lalu” ditafsirkan sebagai objecttype: movies releasedafter:2019-3-10 releasedbefore:2019-3-16
  • “film dengan durasi kurang dari 90” ditafsirkan sebagai objjecttype: movies runtimelessthan:90.
  • Dengan asumsi tahun ini adalah 2019, “film yang dirilis tahun ini dan berdurasi lebih dari 120” ditafsirkan sebagai releasedafter:2019-1-1 releasedbefore:2019-12-31 objecttype:movies runtimegreaterthan:120.
  • “urutkan film berdasarkan tanggal rilis” akan memfilter “objecttype: movies” dan hasil yang ditampilkan akan diurutkan sesuai tanggal rilisnya dengan tata urutan default yang menaik.

Mengaktifkan interpretasi operator yang dipesan

Anda juga dapat menggunakan type, before, after, objecttype yang dicadangkan operator untuk meningkatkan penafsiran kueri. Saat mengindeks dokumen, lakukan hal berikut:

  1. Isi kolom updateTime di ItemMetadata untuk menggunakan operator before dan after. Setelan ini mengaktifkan Cloud Search untuk membuat interpretasi kueri berikut:

    • "film dari minggu lalu" akan mencantumkan semua film yang diperbarui dalam indeks pada minggu sebelumnya.
    • "film sebelum Januari 2019" akan mencantumkan semua film yang diindeks sebelum Januari 2019.
  2. Isi kolom mimeType di ItemMetadata untuk menggunakan deteksi otomatis . Kueri “video aksi” akan mencantumkan semua dokumen film aksi dengan MIME jenis application/mp4, application/mpeg4, application/x-shockwave-flash, video/, dan application/vnd.google-apps.video.

Batasan interpretasi kueri

Fitur interpretasi kueri memiliki batasan berikut.

  • Penafsiran kueri hanya berfungsi untuk ACL sumber data berikut:
    • Semua dokumen dalam domain bersifat publik (semua orang dalam domain dapat mengakses).
    • Semua dokumen dalam sumber data bersifat publik (setiap orang yang memiliki akses ke ACL sumber data).
    • Sebagian besar dokumen dalam sumber data memiliki ACL yang sama (semua dokumen mewarisi ACL dari item container yang sama) tanpa pembaca tambahan yang ditentukan.
  • Jika beberapa operator skema memiliki nilai yang sama, interpretasi dari nilai tersebut terhadap intent operator untuk kueri bergantung pada keseluruhan faktor keyakinan yang ditampilkan oleh sistem interpretasi kueri. Misalnya, Anda memiliki properti priority dan severity dengan nama operator yang sama yang ditentukan dalam skema. Katakanlah kedua operator tersebut dapat memiliki nilai 0, 1, 2, atau 3. Dalam contoh ini, "0" dalam kueri dapat mengacu pada nilai operator untuk priority atau severity. Nilai ini bersifat ambigu dan tingkat keyakinannya lebih rendah.
  • Secara default, interpretasi kueri Cloud Search menurunkan jumlah huruf besar/kecil nilai tertentu saat menginterpretasikan kueri, kecuali untuk operator teks yang ditetapkan dengan Opsi exactMatchWithOperator.
  • Operator source tidak didukung dalam kueri.
  • Kueri yang menggabungkan istilah berbasis operator dan istilah teks bebas tidak diinterpretasikan. Misalnya, kueri "p0 tingkat keparahan kasus prioritas:s0" tidak akan didukung karena "p0 kasus prioritas" adalah istilah teks bebas, sedangkan "tingkat keparahan:s0" adalah istilah berbasis operator.
  • Strategi interpretasi kueri selalu memadukan hasil yang diinterpretasikan dengan hasil biasa (diurutkan menurut relevansi dan tanpa interpretasi). Strategi ini tidak melakukan penggantian hasil halaman penuh.