คิวการจัดทำดัชนีของ Google Cloud Search

เครื่องมือเชื่อมต่อ SDK และ Google Cloud Search API ช่วยให้สร้าง Cloud Search ได้ คิวการจัดทำดัชนีที่ใช้ทำงานต่อไปนี้

  • รักษาสถานะของต่อเอกสาร (สถานะ ค่าแฮช และอื่นๆ) ซึ่งอาจเป็น ใช้เพื่อให้ดัชนีซิงค์กับที่เก็บของคุณ

  • เก็บรักษารายการที่จะจัดทำดัชนีตามที่ค้นพบระหว่างการข้ามผ่าน ขั้นตอนได้

  • จัดลำดับความสำคัญรายการในคิวตามสถานะของรายการ

  • เก็บข้อมูลสถานะเพิ่มเติมเพื่อให้การผสานรวมมีประสิทธิภาพ เช่น จุดตรวจสอบ เปลี่ยนโทเค็น และอื่นๆ

คิวคือป้ายกำกับที่กำหนดให้กับรายการที่จัดทำดัชนีแล้ว เช่น "ค่าเริ่มต้น" สำหรับ คิวเริ่มต้นหรือ "B" สำหรับคิว B

สถานะและ ลำดับความสำคัญ

ลำดับความสำคัญของเอกสารในคิวจะขึ้นอยู่กับ ItemStatus โค้ด ต่อไปนี้คือเป็นไปได้ ItemStatus ตามลำดับความสำคัญ (จัดการก่อนจนถึงจัดการสุดท้าย):

  • ERROR - รายการพบข้อผิดพลาดแบบไม่พร้อมกันระหว่างการจัดทำดัชนี และต้องได้รับการจัดทำดัชนีอีกครั้ง

  • MODIFIED - รายการที่จัดทำดัชนีไว้ก่อนหน้านี้และได้รับการแก้ไขหลังจากนั้นใน ที่เก็บนับตั้งแต่การจัดทำดัชนีครั้งล่าสุด

  • NEW_ITEM - รายการที่ยังไม่ได้จัดทำดัชนี

  • ACCEPTED - เอกสารที่จัดทำดัชนีไว้ก่อนหน้านี้และไม่มีการเปลี่ยนแปลงใน นับตั้งแต่การจัดทำดัชนีครั้งล่าสุด

เมื่อรายการ 2 รายการในคิวมีสถานะเหมือนกัน ระบบจะให้ลำดับความสำคัญที่สูงกว่า รายการที่อยู่ในคิวเป็นระยะเวลานานที่สุด

ภาพรวมของการใช้คิวการจัดทำดัชนีเพื่อจัดทำดัชนีรายการใหม่หรือรายการที่เปลี่ยนแปลง

รูปที่ 1 แสดงขั้นตอนการจัดทําดัชนีรายการใหม่หรือที่มีการเปลี่ยนแปลงโดยใช้การจัดทำดัชนี คิว ขั้นตอนเหล่านี้แสดงการเรียก API ของ REST สำหรับการเรียก SDK ที่เทียบเท่า โปรดดู การดำเนินการในคิว (SDK ของเครื่องมือเชื่อมต่อ)

วันที่ ภาพรวมการจัดทำดัชนีของ Google Cloud Search
รูปที่ 1 ขั้นตอนการจัดทําดัชนีเพื่อเพิ่มหรืออัปเดตรายการ
  1. เครื่องมือเชื่อมต่อเนื้อหาใช้ items.push เพื่อพุชรายการ (ข้อมูลเมตาและแฮช) ลงในคิวการจัดทำดัชนีเพื่อสร้างรายการ สถานะ (MODIFIED, NEW_ITEM, DELETED) กล่าวโดยละเอียดคือ

    • เมื่อดัน เครื่องมือเชื่อมต่อจะมีการดันอย่างชัดแจ้ง type หรือ contentHash
    • หากเครื่องมือเชื่อมต่อไม่มี type ระบบจะดำเนินการ Cloud Search จะใช้ contentHash ในการระบุสถานะของรายการโดยอัตโนมัติ
    • หากไม่ทราบรายการ ระบบจะตั้งค่าสถานะรายการเป็น NEW_ITEM
    • หากมีรายการดังกล่าวอยู่และค่าแฮชตรงกัน ระบบจะเก็บสถานะไว้เป็น ACCEPTED
    • หากมีรายการดังกล่าวอยู่และแฮชต่างกัน สถานะจะกลายเป็น MODIFIED

    ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีกำหนดสถานะสินค้าได้ที่ การไปยังส่วนต่างๆ ในที่เก็บ GitHub โค้ดตัวอย่างใน บทแนะนำการเริ่มต้นใช้งาน Cloud Search

    โดยปกติการพุชจะเชื่อมโยงกับการส่งผ่านเนื้อหาและ/หรือการตรวจจับการเปลี่ยนแปลง ในเครื่องมือเชื่อมต่อ

  2. เครื่องมือเชื่อมต่อเนื้อหาใช้ items.poll ในแบบสำรวจคิว เพื่อกำหนดรายการที่จะจัดทำดัชนี Cloud Search จะแจ้งเครื่องมือเชื่อมต่อ รายการใดที่จำเป็นต้องจัดทำดัชนีมากที่สุด โดยจัดเรียงตามรหัสสถานะก่อน แล้วจึง ตามเวลาในคิว

  3. เครื่องมือเชื่อมต่อจะเรียกรายการเหล่านี้จากที่เก็บและดัชนีบิลด์ คำขอ API

  4. เครื่องมือเชื่อมต่อใช้ items.index เพื่อจัดทำดัชนีรายการ รายการนี้จะเข้าสู่สถานะ ACCEPTED ต่อจาก Cloud Search เท่านั้น ประมวลผลรายการเสร็จเรียบร้อยแล้ว

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

ภาพรวมของการใช้คิวการจัดทำดัชนีเพื่อลบรายการ

กลยุทธ์ Full-traversal ใช้กระบวนการ 2 คิวในการจัดทำดัชนีรายการ และตรวจหาการลบ รูปที่ 2 แสดงขั้นตอนการลบรายการโดยใช้ ของคิวการจัดทำดัชนี โดยเฉพาะอย่างยิ่ง รูปที่ 2 แสดงการส่งผ่านลำดับที่ 2 โดยใช้กลยุทธ์การส่งผ่านแบบสมบูรณ์ ขั้นตอนเหล่านี้ใช้การเรียก API ของ REST สำหรับ การเรียก SDK ที่เทียบเท่า โปรดดูการดำเนินการตามคิว (SDK ของเครื่องมือเชื่อมต่อ)

วันที่ ภาพรวมการจัดทำดัชนีของ Google Cloud Search
รูปที่ 2 กำลังลบรายการ
  1. ในการข้ามผ่านเริ่มต้น เครื่องมือเชื่อมต่อเนื้อหาจะใช้ items.push เพื่อพุชรายการ (ข้อมูลเมตาและแฮช) ลงในคิวการจัดทำดัชนี "queue A" ในฐานะ NEW_ITEM เนื่องจากไม่มีอยู่ในคิว ระบบจะติดป้ายกำกับให้กับแต่ละรายการ "A" สำหรับ "queue A" ระบบจะจัดทำดัชนีเนื้อหาไว้ใน Cloud Search

  2. เครื่องมือเชื่อมต่อเนื้อหาใช้ items.poll ไปยังคิวการสำรวจความคิดเห็น A เพื่อกำหนดรายการที่จะจัดทำดัชนี Cloud Search จะแจ้งเครื่องมือเชื่อมต่อ รายการใดที่จำเป็นต้องจัดทำดัชนีมากที่สุด โดยจัดเรียงตามรหัสสถานะก่อน แล้วจึง ตามเวลาในคิว

  3. เครื่องมือเชื่อมต่อจะเรียกรายการเหล่านี้จากที่เก็บและดัชนีบิลด์ คำขอ API

  4. เครื่องมือเชื่อมต่อใช้ items.index เพื่อจัดทำดัชนีรายการ รายการนี้จะเข้าสู่สถานะ ACCEPTED ต่อจาก Cloud Search เท่านั้น ประมวลผลรายการเสร็จเรียบร้อยแล้ว

  5. deleteQueueItems จะเรียกเมธอดใน "queue B" แต่ยังไม่มีรายการใดได้รับการพุชไปยังคิว B ไม่สามารถลบสิ่งใดได้

  6. ในการข้ามผ่านแบบสมบูรณ์รายการที่สอง เครื่องมือเชื่อมต่อเนื้อหาจะใช้ items.push เพื่อพุชรายการ (ข้อมูลเมตาและแฮช) ลงในคิว B

    • เมื่อดัน เครื่องมือเชื่อมต่อจะมีการดันอย่างชัดแจ้ง type หรือ contentHash
    • หากเครื่องมือเชื่อมต่อไม่มี type ระบบจะดำเนินการ Cloud Search จะใช้ contentHash ในการระบุสถานะของรายการโดยอัตโนมัติ
    • หากไม่ทราบรายการ ระบบจะตั้งค่าสถานะรายการเป็น NEW_ITEM และคิว เปลี่ยนเป็น "B"
    • หากมีรายการดังกล่าวอยู่และค่าแฮชตรงกัน ระบบจะเก็บสถานะเป็น ACCEPTED และป้ายกำกับคิวจะเปลี่ยนเป็น "B"
    • หากมีรายการดังกล่าวอยู่และแฮชต่างกัน สถานะจะกลายเป็น MODIFIED และคิว เปลี่ยนเป็น "B"
  7. เครื่องมือเชื่อมต่อเนื้อหาใช้ items.poll ในแบบสำรวจคิว เพื่อกำหนดรายการที่จะจัดทำดัชนี Cloud Search จะแจ้งเครื่องมือเชื่อมต่อ รายการใดที่จำเป็นต้องจัดทำดัชนีมากที่สุด โดยจัดเรียงตามรหัสสถานะก่อน แล้วจึง ตามเวลาในคิว

  8. เครื่องมือเชื่อมต่อจะเรียกรายการเหล่านี้จากที่เก็บและดัชนีบิลด์ คำขอ API

  9. เครื่องมือเชื่อมต่อใช้ items.index เพื่อจัดทำดัชนีรายการ รายการนี้จะเข้าสู่สถานะ ACCEPTED ต่อจาก Cloud Search เท่านั้น ประมวลผลรายการเสร็จเรียบร้อยแล้ว

  10. สุดท้าย deleteQueueItems เรียกใช้ในคิว A เพื่อลบรายการ CCloud Search ที่จัดทำดัชนีไว้ก่อนหน้านี้ทั้งหมด ยังมีคิว "A" อยู่ ป้ายกำกับ

  11. เมื่อใช้การข้ามผ่านทั้งหมดที่ตามมา คิวที่ใช้สำหรับการจัดทำดัชนี และคิวที่ใช้สำหรับการลบจะถูกสลับ

การดำเนินการตามคิว (SDK ของเครื่องมือเชื่อมต่อ)

Content Connector SDK ดำเนินการต่างๆ สำหรับการพุชรายการไปยัง และการดึง รายการจาก คิว

หากต้องการจัดแพ็กเกจและพุชรายการไปยังคิว ให้ใช้ pushItems เครื่องมือสร้างคลาส

คุณไม่จำเป็นต้องดำเนินการใดๆ เป็นพิเศษเพื่อดึงรายการจากคิวสำหรับ การประมวลผล แต่ SDK จะดึงรายการจากคิวโดยอัตโนมัติแทน โดยใช้ ของที่เก็บ getDoc

การดำเนินการตามคิว (REST API)

REST API มีวิธีส่งรายการไปยังและ ดึงรายการจากคิว:

  • หากต้องการพุชรายการไปยังคิว ให้ใช้ Items.push
  • หากต้องการสำรวจรายการในคิว ให้ใช้ Items.poll

คุณยังสามารถใช้ Items.index เพื่อพุชรายการไปยังคิวระหว่างการจัดทำดัชนี รายการถูกพุชไปยังคิวระหว่าง คุณไม่จำเป็นต้องมี type และได้รับสถานะเป็น ACCEPTED

Items.push

Items.push จะเพิ่มรหัสลงในคิว วิธีนี้สามารถเรียกใช้ด้วย type ค่าที่กำหนดผลลัพธ์ของการดำเนินการพุช โปรดดูรายการค่า type ที่ ไปยัง ช่อง item.type ใน Items.push

การพุชรหัสใหม่จะส่งผลให้มีการเพิ่มรายการใหม่ที่มี NEW_ITEM ItemStatus โค้ด

ระบบจะจัดเก็บเพย์โหลดที่ไม่บังคับเสมอ โดยถือว่าเป็นค่าทึบแสง และแสดงผล จาก Items.poll

เมื่อมีการสำรวจสินค้า สินค้าดังกล่าวจะถูกสงวนไว้ ซึ่งหมายความว่าจะไม่สามารถส่งคืนสินค้าได้โดย โทรหาอีกสายหนึ่ง Items.poll การใช้ Items.push กับ type เป็น NOT_MODIFIED, REPOSITORY_ERROR หรือ REQUEUE ไม่จอง รายการแบบสำรวจ สําหรับข้อมูลเพิ่มเติมเกี่ยวกับรายการที่จองและไม่ได้จอง ดูที่ส่วน Items.poll

Items.push ที่มีแฮช

Google Cloud Search API รองรับการระบุข้อมูลเมตาและค่าแฮชเนื้อหา ในวันที่ Items.index คำขอ แทนที่จะระบุ type ค่าแฮชข้อมูลเมตาและ/หรือเนื้อหา สามารถระบุได้ด้วยคำขอพุช เปรียบเทียบคิวการจัดทำดัชนีของ Cloud Search ค่าแฮชที่ระบุพร้อมค่าที่จัดเก็บไว้ซึ่งใช้ได้กับรายการใน แหล่งข้อมูล หากไม่ตรงกัน ระบบจะทำเครื่องหมายรายการนั้นเป็น MODIFIED หากที่สอดคล้องกัน ไม่มีรายการอยู่ในดัชนี สถานะจึงเป็น NEW_ITEM

Items.poll

Items.poll จะดึงรายการที่มีลำดับความสำคัญสูงสุดจากคิว และ ค่าสถานะที่แสดงผล หมายถึงสถานะของ คิวลำดับความสำคัญที่ขอหรือสถานะของรหัสที่แสดงผล

โดยค่าเริ่มต้น อาจมีการส่งคืนรายการจากส่วนใดก็ได้ของคิว โดยขึ้นอยู่กับ ลำดับความสำคัญ รายการที่ส่งคืนแต่ละรายการจะถูกสงวนไว้ และจะไม่ส่งคืนโดยผู้ใช้รายอื่น โทรหา Items.poll จนกว่าจะเป็นไปตามกรณีใดกรณีหนึ่งต่อไปนี้

  • การจองหมดเวลาแล้ว
  • รายการจะได้รับการจัดคิวอีกครั้งโดย Items.index
  • Items.push ถูกเรียกด้วย type เป็น NOT_MODIFIED, REPOSITORY_ERROR หรือ REQUEUE