สร้างอินเทอร์เฟซการค้นหาด้วย Query API

Query API มีเมธอดค้นหาและเมธอดแนะนำสำหรับการสร้างอินเทอร์เฟซการค้นหา หรือการฝังผลลัพธ์ในแอปพลิเคชัน

สำหรับเว็บแอปพลิเคชันที่มีข้อกำหนดขั้นต่ำ ให้ลองใช้เครื่องมือค้นหา ดูสร้างอินเทอร์เฟซการค้นหาด้วยวิดเจ็ตค้นหา

สร้างอินเทอร์เฟซการค้นหา

การสร้างอินเทอร์เฟซการค้นหาที่เรียบง่ายต้องทำหลายขั้นตอน ดังนี้

  1. กำหนดค่าแอปพลิเคชันการค้นหา
  2. สร้างข้อมูลเข้าสู่ระบบ OAuth สำหรับแอปพลิเคชัน
  3. ค้นหาดัชนี
  4. แสดงผลการค้นหา

คุณสามารถปรับปรุงอินเทอร์เฟซด้วยฟีเจอร์ต่างๆ เช่น การแบ่งหน้า การจัดเรียง การกรอง แง่มุม และการเติมข้อความอัตโนมัติ

กำหนดค่าแอปพลิเคชันการค้นหา

คุณต้องสร้างแอปพลิเคชันการค้นหาอย่างน้อย 1 รายการสำหรับอินเทอร์เฟซการค้นหาแต่ละรายการ แอปพลิเคชันการค้นหามีพารามิเตอร์เริ่มต้น เช่น แหล่งข้อมูล ลำดับการจัดเรียง ตัวกรอง และข้อมูลประกอบ คุณลบล้างพารามิเตอร์เหล่านี้ได้โดยใช้ Query API

คุณไม่สามารถเพิ่มจำนวนแหล่งข้อมูลที่ใช้ในการค้นหาให้เกินกว่าแหล่งข้อมูลที่กำหนดค่าไว้ในแอปพลิเคชันการค้นหา คุณจำกัดการค้นหาให้เหลือเพียง ชุดย่อยของแหล่งข้อมูลเหล่านี้ได้โดยใช้ dataSourceRestrictions

ดูข้อมูลเพิ่มเติมได้ที่ปรับแต่งประสบการณ์การค้นหา

สร้างข้อมูลเข้าสู่ระบบ OAuth สำหรับแอปพลิเคชัน

นอกเหนือจากขั้นตอนในกำหนดค่าการเข้าถึง Cloud Search API แล้ว คุณต้องสร้างข้อมูลเข้าสู่ระบบ OAuth สำหรับเว็บแอปพลิเคชันด้วย

ใช้ข้อมูลเข้าสู่ระบบเพื่อขอการให้สิทธิ์ในนามของผู้ใช้ ใช้ขอบเขต https://www.googleapis.com/auth/cloud_search.query

ดูข้อมูลเพิ่มเติมเกี่ยวกับตัวเลือก OAuth ได้ที่ Google Identity Platform

ค้นหาดัชนี

ใช้เมธอด search เพื่อค้นหาดัชนี

ทุกคำขอต้องมีข้อความ query และ searchApplicationId

ตัวอย่างนี้ค้นหาแหล่งข้อมูลภาพยนตร์

{
  "query": "titanic",
  "requestOptions": {
    "searchApplicationId": "searchapplications/<search_app_id>"
  }
}

แสดงผลการค้นหา

อินเทอร์เฟซการค้นหาควรแสดงรายการ title และลิงก์ไปยังรายการต้นฉบับ นอกจากนี้ คุณยังใช้ข้อมูลโค้ดและข้อมูลเมตาเพื่อปรับปรุงการแสดงผลได้ด้วย

จัดการผลการค้นหาเสริม

Cloud Search จะแสดงผลการค้นหาเพิ่มเติมเมื่อมีผลการค้นหาที่ตรงกับคำค้นหาไม่เพียงพอ ฟิลด์ queryInterpretation จะระบุสิ่งนี้ หากมีเฉพาะผลการค้นหาเสริม InterpretationType จะเป็น REPLACE หากเป็นสีผสม จะเป็น BLEND

เมื่อแสดงผลการค้นหาเพิ่มเติม ให้พิจารณาแจ้งให้ผู้ใช้ทราบ สำหรับ REPLACE คุณอาจพูดว่า "การค้นหาของคุณไม่ตรงกับผลการค้นหาใดๆ กำลังแสดง ผลการค้นหาสำหรับคำค้นหาที่คล้ายกัน"

จัดการผลการค้นหาบุคคล

Cloud Search จะแสดงเอกสารที่เกี่ยวข้องกับบุคคลและข้อมูลพนักงาน โดยใช้ฟีเจอร์การค้นหาบุคคล ผลลัพธ์จะอยู่ในฟิลด์ structuredResults ดังนี้

{
  "results": [...],
  "structuredResults": [{
    "person": {...}
  }]
}

การจับคู่ผู้ใต้บังคับบัญชา

การจับคู่ผู้ใต้บังคับบัญชาโดยตรงช่วยให้ผู้ใช้เห็นผู้ใต้บังคับบัญชาโดยตรงของบุคคล การตอบกลับ มี assistCardProtoHolder ที่มี cardType ของ RELATED_PEOPLE_ANSWER_CARD

ปิดการเพิ่มประสิทธิภาพ

ระบบจะเปิดใช้การเพิ่มประสิทธิภาพ เช่น ผลการค้นหาเพิ่มเติม โดยค่าเริ่มต้น คุณสามารถ ปิดใช้ได้โดยทำดังนี้

  • ระดับแอปพลิเคชันการค้นหา: ตั้งค่า force_verbatim_mode เป็น true
  • ระดับการค้นหา: ตั้งค่า enableVerbatimMode เป็น true

ไฮไลต์ตัวอย่าง

Cloud Search จะแสดงข้อมูลโค้ดสำหรับข้อความหรือ HTML ที่จัดทำดัชนี หากมี คำค้นหา matchRanges จะระบุตำแหน่งของคำค้นหา ใช้ช่วงต่อไปนี้เพื่อไฮไลต์ข้อความ

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;
}

จากข้อมูลโค้ดต่อไปนี้

{
  "snippet": "This is an example snippet...",
  "matchRanges": [
    {
      "start": 11,
      "end": 18
    }
  ]
}

สตริง HTML ที่ได้คือ

This is an <span class="highlight">example</span> snippet...

ข้อมูลเมตาที่แสดงผล

ใช้ช่อง metadata สำหรับข้อมูล เช่น createTime, updateTime และ Structured Data ใช้ displayOptions เพื่อแสดง Structured Data

ดึงข้อมูลผลลัพธ์เพิ่มเติม

หากต้องการดึงข้อมูลผลลัพธ์เพิ่มเติม ให้ตั้งค่าฟิลด์ start เป็นออฟเซ็ตที่เลือก ปรับขนาดหน้าด้วย pageSize ใช้ resultCount เพื่อแสดงรายการทั้งหมดหรือจำนวนโดยประมาณ

จัดเรียงผลลัพธ์

ใช้ sortOptions เพื่อระบุลำดับดังนี้

  • operatorName: พร็อพเพอร์ตี้ที่จะใช้จัดเรียง
  • sortOrder: ASCENDING หรือ DESCENDING

ความเกี่ยวข้องเป็นคีย์การจัดเรียงเริ่มต้นและรอง

เพิ่มตัวกรอง

จำกัดผลลัพธ์ด้วยตัวกรอง ในแอปพลิเคชันหรือคำขอค้นหา หากทั้ง 2 ระบุตัวกรองสำหรับแหล่งที่มา ทั้ง 2 จะต้องประเมินเป็นจริง

ใช้ตัวกรองใน dataSourceRestrictions.filterOptions[] ประเภทตัวกรองหลัก

  • ตัวกรองออบเจ็กต์: จำกัดการจับคู่ให้เป็นประเภทที่เฉพาะเจาะจง
  • ตัวกรองค่า: จำกัดการจับคู่ตามโอเปอเรเตอร์และค่า

ตัวกรองแบบรวม รวมตัวกรองค่าหลายรายการ

ปรับแต่งผลลัพธ์ด้วยแง่มุม

Facet ช่วยให้ผู้ใช้ปรับแต่งการค้นหาแบบอินเทอร์แอกทีฟได้ เมื่อคุณขอ Facet Cloud Search จะคำนวณค่าที่พบบ่อยที่สุดสำหรับพร็อพเพอร์ตี้เหล่านั้น

รูปแบบทั่วไป 1. การค้นหาที่ระบุพร็อพเพอร์ตี้ของแง่มุม 1. แสดงผลการค้นหาและผลลัพธ์ของ Facet 1. ผู้ใช้เลือกค่าแง่มุม 1. ค้นหาซ้ำโดยใช้ตัวกรองตามตัวเลือก

ผลลัพธ์ของ Facet ที่มีช่องที่อิงตามจำนวนเต็ม

ทําเครื่องหมายพร็อพเพอร์ตี้จํานวนเต็มเป็นพร็อพเพอร์ตี้ที่กรองได้เพื่อปรับแต่งผลลัพธ์ตามช่วง (เช่น "100-200" หน้า) ตั้งค่า isFacetable เป็น true และกำหนดตัวเลือกการจัดกลุ่มเริ่มต้น ในสคีมา

จำแนกผลลัพธ์ตามขนาดหรือวันที่ของเอกสาร

ใช้โอเปอเรเตอร์ที่สงวนไว้

  • itemsize: สำหรับขนาดไฟล์เป็นไบต์
  • createddatetimestamp: สำหรับวันที่สร้าง
  • lastmodified: สำหรับวันที่แก้ไข

เพิ่มคำแนะนำ

ใช้ suggest API สำหรับการเติมข้อความอัตโนมัติโดยอิงตามประวัติการค้นหา รายชื่อติดต่อ และเนื้อหาของเอกสาร