Query API menyediakan metode penelusuran dan saran untuk membuat antarmuka penelusuran atau menyematkan hasil dalam aplikasi.
Untuk aplikasi web dengan persyaratan minimum, pertimbangkanlah untuk menggunakan widget penelusuran. Lihat Membuat antarmuka penelusuran dengan widget penelusuran.
Membuat antarmuka penelusuran
Berikut langkah-langkah untuk membuat antarmuka penelusuran yang sederhana:
- Mengonfigurasi aplikasi penelusuran.
- Buat kredensial OAuth untuk aplikasi.
- Buat kueri indeks.
- Tampilkan hasil kueri.
Anda dapat meningkatkan kualitas antarmuka dengan fitur seperti penomoran halaman, pengurutan, pemfilteran, faset, dan pelengkapan otomatis.
Mengonfigurasi aplikasi penelusuran
Anda harus membuat setidaknya satu aplikasi penelusuran untuk setiap antarmuka penelusuran. Aplikasi penelusuran memberikan parameter default, seperti sumber data, tata urutan, filter, dan faset. Anda dapat mengganti parameter ini menggunakan Query API.
Anda tidak dapat meningkatkan jumlah sumber data yang digunakan dalam kueri lebih dari yang dikonfigurasi dalam aplikasi penelusuran. Anda dapat membatasi kueri ke subset sumber ini menggunakan dataSourceRestrictions.
Untuk mengetahui informasi selengkapnya, lihat Menyesuaikan pengalaman penelusuran.
Buat kredensial OAuth untuk aplikasi
Selain langkah-langkah dalam Mengonfigurasi akses ke Cloud Search API, Anda harus membuat kredensial OAuth untuk aplikasi web Anda.
Gunakan kredensial untuk meminta otorisasi atas nama pengguna. Gunakan
cakupan https://www.googleapis.com/auth/cloud_search.query.
Untuk mengetahui opsi OAuth selengkapnya, lihat Platform Google Identity.
Membuat kueri indeks
Gunakan metode search
untuk menelusuri indeks.
Setiap permintaan harus menyertakan query dan searchApplicationId teks.
Contoh ini mengkueri sumber data film:
{
"query": "titanic",
"requestOptions": {
"searchApplicationId": "searchapplications/<search_app_id>"
}
}
Menampilkan hasil kueri
Antarmuka penelusuran harus menampilkan title item dan link ke item asli. Anda juga dapat menggunakan cuplikan dan metadata untuk meningkatkan tampilan.
Menangani hasil tambahan
Cloud Search menampilkan hasil tambahan jika tidak ada kecocokan yang cukup untuk kueri. Kolom
queryInterpretation
menunjukkan hal ini. Jika hanya hasil tambahan yang ditampilkan,
InterpretationType adalah REPLACE. Jika digabungkan, maka akan menjadi BLEND.
Saat menampilkan hasil tambahan, pertimbangkan untuk memberi tahu pengguna. Untuk a
REPLACE, Anda dapat mengatakan: "Penelusuran Anda tidak cocok dengan hasil apa pun. Menampilkan
hasil untuk kueri serupa."
Menangani hasil penelusuran orang
Cloud Search menampilkan dokumen yang terkait dengan orang dan informasi karyawan menggunakan fitur Penelusuran Orang. Hasilnya ada di kolom
structuredResults:
{
"results": [...],
"structuredResults": [{
"person": {...}
}]
}
Pencocokan Bawahan Langsung
Bawahan Langsung yang Cocok memungkinkan pengguna melihat bawahan langsung seseorang. Respons
mencakup assistCardProtoHolder dengan cardType bernilai
RELATED_PEOPLE_ANSWER_CARD.
Menonaktifkan pengoptimalan
Pengoptimalan seperti hasil tambahan diaktifkan secara default. Anda dapat menonaktifkannya:
- Tingkat aplikasi penelusuran: Tetapkan
force_verbatim_modeketrue. - Tingkat kueri: Setel
enableVerbatimModeketrue.
Menyoroti cuplikan
Cloud Search menampilkan cuplikan untuk teks atau HTML yang diindeks. Jika ada istilah kueri, matchRanges akan mengidentifikasi lokasinya. Gunakan rentang ini untuk menandai teks.
function highlightSnippet(snippet) {
let text = snippet.snippet;
let formattedText = text;
if (snippet.matchRanges) {
let parts = [];
let index = 0;
for (let match of snippet.matchRanges) {
let start = match.start || 0; // Default to 0 if omitted
let end = match.end;
if (index < start) { // Include any leading text before/between ranges
parts.push(text.slice(index, start));
}
parts.push('<span class="highlight">');
parts.push(text.slice(start, end));
parts.push('</span>');
index = end;
}
parts.push(text.slice(index)); // Include any trailing text after last range
formattedText = parts.join('');
}
return formattedText;
}
Jika cuplikannya adalah berikut ini:
{
"snippet": "This is an example snippet...",
"matchRanges": [
{
"start": 11,
"end": 18
}
]
}
String HTML yang dihasilkan adalah:
This is an <span class="highlight">example</span> snippet...
Metadata Display
Gunakan kolom
metadata
untuk informasi seperti createTime, updateTime, dan data terstruktur.
Gunakan displayOptions
untuk menampilkan data terstruktur.
Mengambil hasil tambahan
Untuk mengambil lebih banyak hasil, tetapkan kolom
start
ke offset yang dipilih. Sesuaikan ukuran halaman dengan pageSize. Gunakan
resultCount untuk menampilkan total item atau perkiraan jumlah.
Urutkan hasil
Gunakan
sortOptions
untuk menentukan urutan:
operatorName: properti yang akan diurutkan.sortOrder:ASCENDINGatauDESCENDING.
Relevansi adalah kunci pengurutan default dan sekunder.
Tambahkan filter
Membatasi hasil dengan filter dalam aplikasi atau permintaan penelusuran. Jika keduanya menentukan filter untuk sumber, keduanya harus bernilai benar.
Terapkan filter di
dataSourceRestrictions.filterOptions[].
Jenis filter utama:
- Filter objek: membatasi kecocokan ke jenis tertentu.
- Filter nilai: membatasi kecocokan berdasarkan operator dan nilai.
Filter komposit menggabungkan beberapa filter nilai.
Menyaring hasil dengan faset
Faset membantu pengguna menyaring kueri secara interaktif. Saat Anda meminta faset, Cloud Search menghitung nilai yang paling sering digunakan untuk properti tersebut.
Pola umum: 1. Kueri yang menentukan properti faset. 1. Melakukan render hasil penelusuran dan faset. 1. Pengguna memilih nilai faset. 1. Mengulangi kueri dengan filter berdasarkan pilihan.
Hasil faset dengan kolom berbasis bilangan bulat
Tandai properti bilangan bulat sebagai dapat difasilitasi untuk mempersempit hasil menurut rentang (misalnya,
"100-200" halaman). Tetapkan isFacetable ke true dan tentukan opsi
pengelompokan default dalam skema.
Membuat faset hasil menurut ukuran atau tanggal dokumen
Menggunakan operator yang dicadangkan:
itemsize: untuk ukuran file dalam byte.createddatetimestamp: untuk tanggal pembuatan.lastmodified: untuk tanggal modifikasi.
Menambahkan saran
Gunakan API saran untuk penyelesaian otomatis berdasarkan histori kueri, kontak, dan konten dokumen.