Membuat antarmuka penelusuran dengan Query API

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:

  1. Mengonfigurasi aplikasi penelusuran.
  2. Buat kredensial OAuth untuk aplikasi.
  3. Buat kueri indeks.
  4. 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:

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: ASCENDING atau DESCENDING.

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.