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.
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. Tujuanruntimelessthan
danruntimegreaterthan
ditetapkan untuk properti ini. - Properti tanggal
releaseDate
mengacu pada waktu film dirilis di bioskop.releasedbefore
danreleasedafter
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:
Isi kolom
updateTime
diItemMetadata
untuk menggunakan operatorbefore
danafter
. 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.
Isi kolom
mimeType
diItemMetadata
untuk menggunakan deteksi otomatis . Kueri “video aksi” akan mencantumkan semua dokumen film aksi dengan MIME jenisapplication/mp4
,application/mpeg4
,application/x-shockwave-flash
,video/
, danapplication/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
danseverity
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 untukpriority
atauseverity
. 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.