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. String, misalnya nama aktor "Tom Hanks", yang muncul secara konsisten dalam kolom skema bernama 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. Interpretasi 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

Interpretasi kueri Cloud Search menggunakan objectDefinitions dan propertyDefinitions dalam skema untuk menafsirkan kueri pengguna dan menyesuaikan hasilnya. Untuk memaksimalkan manfaat 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:

  • "film aksi", "film jenis aksi genre", atau "aksi genre film" diinterpretasikan sebagai genre:action object:movies.
  • “film dengan genre aksi atau thriller” diinterpretasikan sebagai objecttype:movies genre:(action OR thriller).
  • “action film” atau “action films” diinterpretasikan sebagai genre:action objecttype:movies.
  • “film kategori komedi” diinterpretasikan sebagai genre:comedy objecttype:movies.

Mengaktifkan interpretasi tanggal, numerik, dan pengurutan

Anda harus menentukan lessThanOperatorName dan greaterThanOperatorName, yang ditentukan dalam IntegerOperatorOptions, untuk semua properti tanggal dan numerik. Setelan tersebut memungkinkan interpretasi tanggal dan numerik yang otomatis. Selain itu, untuk mengaktifkan interpretasi pengurutan, tetapkan 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 durasi film. runtimelessthan dan runtimegreaterthan ditetapkan untuk properti ini.
  • Properti tanggal releaseDate mengacu pada waktu rilis film 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” diinterpretasikan 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” diinterpretasikan sebagai objecttype: movies releasedafter:2019-3-10 releasedbefore:2019-3-16
  • "film dengan durasi kurang dari 90" diinterpretasikan sebagai objjecttype: movies runtimelessthan:90.
  • Dengan asumsi tahun ini adalah tahun 2019, “film yang dirilis tahun ini dan berdurasi lebih dari 120 tahun” diinterpretasikan 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 operator bawaan yang dipesan type, before, after, objecttype untuk meningkatkan interpretasi 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 jenis otomatis. Kueri “video aksi” akan mencantumkan semua dokumen film tindakan dengan jenis mime application/mp4, application/mpeg4, application/x-shockwave-flash, video/, dan application/vnd.google-apps.video.

Batasan interpretasi kueri

Fitur interpretasi kueri memiliki batasan berikut.

  • Interpretasi 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. Sebagai contoh, 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 merujuk ke nilai operator untuk priority atau severity. Nilai ini bersifat ambigu dan tingkat keyakinannya lebih rendah.
  • Secara default, interpretasi kueri Cloud Search menurunkan nilai kolom saat menafsirkan kueri, kecuali untuk operator teks yang ditentukan 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.