Membuat struktur skema untuk mendapatkan interpretasi kueri yang optimal

Interpretasi kueri Cloud Search secara otomatis mengonversi operator dan filter dalam kueri pengguna menjadi kueri terstruktur berbasis operator. Fitur ini menggunakan operator yang ditentukan dalam skema dan dokumen yang diindeks untuk menyimpulkan maksud kueri. Hal ini memungkinkan pengguna melakukan penelusuran dengan kata kunci minimal dan mendapatkan hasil yang akurat.

Presentasi hasil bergantung pada keyakinan. Keyakinan meningkat saat string kueri muncul secara konsisten di kolom skema tertentu (misalnya, "Tom Hanks" di kolom actors). Keyakinan menurun saat string muncul dalam prosa umum. Keyakinan tinggi hanya menampilkan hasil yang diinterpretasikan, sedangkan keyakinan yang lebih rendah menggabungkannya dengan hasil kata kunci standar.

Contoh interpretasi kueri

Pertimbangkan database yang berisi informasi film. Gambar 1 menunjukkan contoh kueri penelusuran dan interpretasinya.

Ringkasan interpretasi kueri
Gambar 1. Interpretasi kueri

Untuk contoh ini, interpretasi kueri:

  • Menentukan dari skema bahwa objek level atas adalah objecttype:movies.
  • Memindai dokumen untuk mengidentifikasi tempat munculnya "action". Jika muncul terutama di kolom genre, keyakinan akan meningkat bahwa itu adalah nilai properti untuk kolom tersebut.

Interpretasi yang dihasilkan adalah: actor:"tom hanks" genre:action objecttype:movies

Interpretasi kueri bersifat otomatis untuk semua pengguna, tetapi Anda dapat mengoptimalkannya dengan menyusun skema seperti yang dijelaskan di bagian berikut.

Menyusun skema untuk interpretasi kueri

Mengoptimalkan skema akan memastikan Anda mendapatkan manfaat dari interpretasi kueri.

Mengaktifkan interpretasi nama tampilan

Interpretasi kueri menggunakan objectDefinitions dan propertyDefinitions untuk menginterpretasikan kueri. Buat nama tampilan yang intuitif menggunakan displayLabel untuk properti, objectDisplayLabel untuk objek, dan operatorName untuk operator.

Contoh ini menunjukkan nama tampilan yang intuitif untuk objek film:

{
  "objectDefinitions": [{
    "name": "movie",
    "options": {
      "displayOptions": { "objectDisplayLabel": "Films" }
    },
    "propertyDefinitions": [{
      "name": "genre",
      "isReturnable": true,
      "textPropertyOptions": {
        "operatorOptions": { "operatorName": "genre" }
      },
      "displayOptions": { "displayLabel": "Category" }
    }]
  }]
}

Nama tampilan ini memungkinkan interpretasi seperti:

  • "action movies" -> genre:action object:movies
  • "movies with genre action or thriller" -> objecttype:movies genre:(action OR thriller)
  • "comedy category movies" -> genre:comedy objecttype:movies

Mengaktifkan interpretasi tanggal, numerik, dan pengurutan

Tentukan lessThanOperatorName dan greaterThanOperatorName di IntegerOperatorOptions untuk semua properti tanggal dan numerik. Untuk mengaktifkan pengurutan, tetapkan isSortable.

Contoh ini mengaktifkan opsi berikut:

{
  "objectDefinitions": [{
    "propertyDefinitions": [
      {
        "name": "runtime",
        "isSortable": true,
        "integerPropertyOptions": {
          "operatorOptions": {
            "operatorName": "runtime",
            "lessThanOperatorName": "runtimelessthan",
            "greaterThanOperatorName": "runtimegreaterthan"
          }
        }
      },
      {
        "name": "releasedate",
        "isSortable": true,
        "datePropertyOptions": {
          "operatorOptions": {
            "operatorName": "releasedate",
            "lessThanOperatorName": "releasedbefore",
            "greaterThanOperatorName": "releasedafter"
          }
        }
      }
    ]
  }]
}

Setelan ini memungkinkan interpretasi seperti:

  • "movies released this year" -> objecttype:movies releasedafter:2019-1-1 releasedbefore:2019-12-31
  • "movies with runtime less than 90" -> objecttype:movies runtimelessthan:90

Mengaktifkan interpretasi operator yang dipesan

Gunakan operator bawaan seperti type, before, after, dan objecttype:

  1. Isi updateTime di ItemMetadata untuk menggunakan before dan after.
  2. Isi mimeType di ItemMetadata untuk pendeteksian otomatis. Misalnya, "action videos" mencantumkan dokumen dengan jenis MIME video.

Batasan interpretasi kueri

  • Hanya berfungsi untuk ACL sumber data berikut:
    • Publik domain.
    • Publik sumber data.
    • Sebagian besar dokumen memiliki ACL turunan yang sama.
  • Nama operator bersama (misalnya, priority dan severity yang keduanya menggunakan 0-3) menurunkan keyakinan.
  • Secara default, interpretasi menggunakan huruf kecil untuk nilai kolom, kecuali jika Anda menggunakan exactMatchWithOperator.
  • Operator source tidak didukung.
  • Istilah operator dan teks bebas gabungan (misalnya, "p0 cases severity:s0") tidak diinterpretasikan.
  • Hasil selalu digabungkan dengan hasil yang diberi peringkat relevansi.