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. Dengan fitur ini, pengguna dapat melakukan penelusuran dengan kata kunci yang minimal dan mendapatkan hasil yang tepat.

Penyajian hasil bergantung pada keyakinan. Tingkat keyakinan meningkat jika string kueri secara konsisten muncul di kolom skema tertentu (misalnya, "Tom Hanks" di kolom actors). Tingkat 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 tingkat teratas adalah objecttype:movies.
  • Memindai dokumen untuk mengidentifikasi tempat terjadinya "tindakan". Jika terutama muncul di kolom genre, keyakinan bahwa itu adalah nilai properti untuk kolom tersebut akan meningkat.

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.

Membuat struktur skema untuk interpretasi kueri

Mengoptimalkan skema 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 menampilkan 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" (film laga) -> genre:action object:movies
  • "movies with genre action or thriller" -> objecttype:movies genre:(action OR thriller)
  • "comedy category movies" (film kategori komedi) -> 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:

  • "film yang dirilis tahun ini" -> 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 deteksi otomatis. Misalnya, "video aksi" mencantumkan dokumen dengan jenis MIME video.

Batasan interpretasi kueri

  • Hanya berfungsi untuk ACL sumber data berikut:
    • {i>Domain public<i}.
    • Sumber data publik.
    • Sebagian besar dokumen memiliki ACL turunan yang sama.
  • Nama operator bersama (misalnya, priority dan severity keduanya menggunakan 0-3) tingkat keyakinan yang lebih rendah.
  • 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 kasus tingkat keparahan:s0") tidak ditafsirkan.
  • Hasil selalu dipadukan dengan hasil yang diurutkan menurut relevansi.