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 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. Interpretasi kueri

Berdasarkan kueri contoh ini, interpretasi kueri melakukan hal berikut:

  • Menguraikan skema dan menentukan bahwa objek level atas 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 suatu skema untuk menginterpretasikan 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 displayLabel “Category”.

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

  • "action movies", "genre action type movies", atau "movies genre action" diinterpretasikan sebagai genre:action object:movies.
  • “movies with genre action or thriller” diinterpretasikan sebagai objecttype:movies genre:(action OR thriller)
  • “action film” atau “action films” diinterpretasikan sebagai genre:action objecttype:movies.
  • "comedy category movies" diinterpretasikan sebagai genre:comedy objecttype:movies.

Mengaktifkan interpretasi tanggal, numerik, dan pengurutan

Anda harus menetapkan lessThanOperatorName dan greaterThanOperatorName, yang ditentukan dalam IntegerOpreatorOptions, 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. Nilai runtimelessthan dan runtimegreaterthan ditetapkan untuk properti ini.
  • Properti tanggal releaseDate mengacu pada waktu perilisan film di bioskop. Nilai releasedbefore dan releasedafter ditetapkan untuk properti ini.

Setelan ini mengaktifkan Cloud Search untuk membuat interpretasi kueri berikut:

  • Dengan asumsi tahun ini adalah tahun 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 menit” 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 pada 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 dalam ItemMetadata untuk menggunakan pendeteksian jenis otomatis. Kueri “video aksi” akan mencantumkan semua dokumen film aksi dengan jenis mime application/mp4, application/mpeg4, application/x-shockwave-flash, video/", andapplication/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. Misalnya, anggap 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 pada 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 menginterpretasikan 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.