เครื่องมือเชื่อมต่อ SDK และ Google Cloud Search API ช่วยให้คุณสร้างคิวการจัดทำดัชนีของ Cloud Search ที่ใช้เพื่อทำงานต่อไปนี้
รักษาสถานะของตามเอกสาร (สถานะ ค่าแฮช และอื่นๆ) ไว้ใช้เพื่อให้ดัชนีซิงค์กับที่เก็บได้
เก็บรักษารายการที่จะจัดทำดัชนีตามที่ค้นพบระหว่างกระบวนการข้ามผ่าน
จัดลำดับความสำคัญรายการในคิวตามสถานะของรายการ
เก็บข้อมูลสถานะเพิ่มเติมเพื่อให้การผสานรวมมีประสิทธิภาพ เช่น จุดตรวจสอบ เปลี่ยนโทเค็น และอื่นๆ
คิวคือป้ายกำกับที่กำหนดให้กับรายการที่จัดทำดัชนีแล้ว เช่น "ค่าเริ่มต้น" สำหรับคิวเริ่มต้น หรือ "B" สำหรับคิว ข
สถานะและลําดับความสําคัญ
ลำดับความสำคัญของเอกสารในคิวจะอิงตามโค้ด ItemStatus
รหัส ItemStatus
ที่เป็นไปได้ซึ่งเรียงตามลำดับความสำคัญมีดังนี้ (จัดการก่อนจนถึงจัดการสุดท้าย)
ERROR
- รายการพบข้อผิดพลาดแบบไม่พร้อมกันในระหว่างขั้นตอนการจัดทำดัชนีและต้องได้รับการจัดทำดัชนีอีกครั้งMODIFIED
- รายการที่จัดทำดัชนีไว้ก่อนหน้านี้และได้รับการแก้ไขแล้วในที่เก็บตั้งแต่การจัดทำดัชนีครั้งล่าสุดNEW_ITEM
- รายการที่ยังไม่ได้จัดทำดัชนีACCEPTED
- เอกสารที่มีการจัดทำดัชนีก่อนหน้านี้ และไม่มีการเปลี่ยนแปลงในที่เก็บตั้งแต่การจัดทำดัชนีครั้งล่าสุด
เมื่อรายการ 2 รายการในคิวมีสถานะเหมือนกัน ระบบจะให้ความสำคัญกับรายการที่อยู่ในคิวนานที่สุดมากกว่า
ภาพรวมของการใช้คิวการจัดทำดัชนีเพื่อจัดทำดัชนีรายการใหม่หรือรายการที่เปลี่ยนแปลง
รูปที่ 1 แสดงขั้นตอนการจัดทําดัชนีรายการใหม่หรือที่มีการเปลี่ยนแปลงโดยใช้คิวการจัดทำดัชนี ขั้นตอนเหล่านี้แสดงการเรียก API ของ REST สำหรับการเรียก SDK ที่เทียบเท่า โปรดดูการดำเนินการคิว (SDK เครื่องมือเชื่อมต่อ)
![ภาพรวมการจัดทำดัชนีของ Google Cloud Search](https://developers-dot-devsite-v2-prod.appspot.com/static/cloud-search/images/architecture-queues-add.png?authuser=9&hl=th)
เครื่องมือเชื่อมต่อเนื้อหาใช้
items.push
เพื่อพุชรายการ (ข้อมูลเมตาและแฮช) ลงในคิวการจัดทำดัชนีเพื่อสร้างสถานะของรายการ (MODIFIED
,NEW_ITEM
,DELETED
) กล่าวอย่างเจาะจงคือ- ขณะพุช เครื่องมือเชื่อมต่อจะรวมพุช
type
หรือcontentHash
ไว้อย่างชัดเจน - หากเครื่องมือเชื่อมต่อไม่มี
type
ไว้ Cloud Search จะใช้contentHash
โดยอัตโนมัติเพื่อระบุสถานะของรายการ - หากไม่ทราบรายการ ระบบจะตั้งค่าสถานะรายการเป็น
NEW_ITEM
- หากมีรายการดังกล่าวอยู่และค่าแฮชตรงกัน ระบบจะเก็บสถานะไว้เป็น
ACCEPTED
- หากมีรายการดังกล่าวอยู่และแฮชต่างกัน สถานะจะกลายเป็น
MODIFIED
ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีกำหนดสถานะรายการได้ที่การไปยังส่วนต่างๆ ในที่เก็บ GitHub ตัวอย่างโค้ดในบทแนะนำการเริ่มต้นใช้งาน Cloud Search
โดยทั่วไปการพุชจะเชื่อมโยงกับกระบวนการข้ามผ่านเนื้อหาและ/หรือการตรวจจับการเปลี่ยนแปลงในเครื่องมือเชื่อมต่อ
- ขณะพุช เครื่องมือเชื่อมต่อจะรวมพุช
เครื่องมือเชื่อมต่อเนื้อหาจะใช้
items.poll
ในแบบสำรวจคิวเพื่อกำหนดรายการที่จะจัดทำดัชนี Cloud Search จะบอกเครื่องมือเชื่อมต่อว่ารายการใดจำเป็นต้องจัดทำดัชนีมากที่สุด โดยจัดเรียงตามรหัสสถานะก่อน แล้วจึงเรียงตามเวลาในการเข้าคิวเครื่องมือเชื่อมต่อจะเรียกรายการเหล่านี้จากที่เก็บและสร้างคำขอ API ดัชนีบิลด์
เครื่องมือเชื่อมต่อจะใช้
items.index
เพื่อจัดทำดัชนีรายการ รายการจะเข้าสู่สถานะACCEPTED
หลังจากที่ Cloud Search ประมวลผลรายการเสร็จเรียบร้อยแล้วเท่านั้น
เครื่องมือเชื่อมต่อยังลบรายการได้หากไม่มีอยู่ในที่เก็บแล้ว หรือพุชรายการอีกครั้งหากไม่มีการแก้ไขหรือมีข้อผิดพลาดเกี่ยวกับที่เก็บซอร์ส สำหรับข้อมูลเกี่ยวกับการลบรายการ โปรดดูที่ส่วนถัดไป
ภาพรวมของการใช้คิวการจัดทำดัชนีเพื่อลบรายการ
กลยุทธ์ Full-traversal ใช้กระบวนการ 2 คิวเพื่อจัดทำดัชนีรายการและตรวจหาการลบ รูปที่ 2 แสดงขั้นตอนการลบรายการโดยใช้คิวการจัดทำดัชนี 2 คิว โดยเฉพาะอย่างยิ่ง รูปที่ 2 แสดงให้เห็นการส่งผ่านรายการที่สอง โดยใช้กลยุทธ์การข้ามผ่านเต็มรูปแบบ ขั้นตอนเหล่านี้ใช้การเรียก API ของ REST สำหรับการเรียก SDK ที่เทียบเท่า โปรดดูการดำเนินการตามคิว (SDK เครื่องมือเชื่อมต่อ)
![ภาพรวมการจัดทำดัชนีของ Google Cloud Search](https://developers-dot-devsite-v2-prod.appspot.com/static/cloud-search/images/architecture-queues-delete.png?authuser=9&hl=th)
ในการข้ามผ่านเริ่มต้น เครื่องมือเชื่อมต่อเนื้อหาจะใช้
items.push
เพื่อพุชรายการ (ข้อมูลเมตาและแฮช) ลงในคิวการจัดทำดัชนี "คิว A" เป็นNEW_ITEM
เนื่องจากไม่มีอยู่ในคิว แต่ละรายการจะได้รับป้ายกำกับ "A" สำหรับ "คิว A" ระบบจะจัดทำดัชนีเนื้อหาไว้ใน Cloud Searchเครื่องมือเชื่อมต่อเนื้อหาจะใช้
items.poll
เพื่อดำเนินการกับคิว A เพื่อกำหนดรายการที่จะจัดทำดัชนี Cloud Search จะบอกเครื่องมือเชื่อมต่อว่ารายการใดจำเป็นต้องจัดทำดัชนีมากที่สุด โดยจัดเรียงตามรหัสสถานะก่อน แล้วจึงเรียงตามเวลาในการเข้าคิวเครื่องมือเชื่อมต่อจะเรียกรายการเหล่านี้จากที่เก็บและสร้างคำขอ API ดัชนีบิลด์
เครื่องมือเชื่อมต่อจะใช้
items.index
เพื่อจัดทำดัชนีรายการ รายการจะเข้าสู่สถานะACCEPTED
หลังจากที่ Cloud Search ประมวลผลรายการเสร็จเรียบร้อยแล้วเท่านั้นเมธอด
deleteQueueItems
เรียกใช้ใน "คิว B" แต่ไม่มีรายการใดได้รับการพุชไปยังคิว B จึงไม่สามารถลบอะไรได้ในการข้ามผ่านแบบเต็มรายการที่สอง เครื่องมือเชื่อมต่อเนื้อหาจะใช้
items.push
เพื่อพุชรายการ (ข้อมูลเมตาและแฮช) ไปยังคิว B- ขณะพุช เครื่องมือเชื่อมต่อจะรวมพุช
type
หรือcontentHash
ไว้อย่างชัดเจน - หากเครื่องมือเชื่อมต่อไม่มี
type
ไว้ Cloud Search จะใช้contentHash
โดยอัตโนมัติเพื่อระบุสถานะของรายการ - หากไม่ทราบรายการ ระบบจะตั้งค่าสถานะรายการเป็น
NEW_ITEM
และป้ายกำกับคิวจะเปลี่ยนเป็น "B" - หากมีรายการดังกล่าวอยู่และค่าแฮชตรงกัน ระบบจะเก็บสถานะเป็น
ACCEPTED
และป้ายกำกับคิวจะเปลี่ยนเป็น "B" - หากมีรายการดังกล่าวอยู่และแฮชต่างกัน สถานะจะกลายเป็น
MODIFIED
และป้ายกำกับคิวจะเปลี่ยนเป็น "B"
- ขณะพุช เครื่องมือเชื่อมต่อจะรวมพุช
เครื่องมือเชื่อมต่อเนื้อหาจะใช้
items.poll
ในแบบสำรวจคิวเพื่อกำหนดรายการที่จะจัดทำดัชนี Cloud Search จะบอกเครื่องมือเชื่อมต่อว่ารายการใดจำเป็นต้องจัดทำดัชนีมากที่สุด โดยจัดเรียงตามรหัสสถานะก่อน แล้วจึงเรียงตามเวลาในการเข้าคิวเครื่องมือเชื่อมต่อจะเรียกรายการเหล่านี้จากที่เก็บและสร้างคำขอ API ดัชนีบิลด์
เครื่องมือเชื่อมต่อจะใช้
items.index
เพื่อจัดทำดัชนีรายการ รายการจะเข้าสู่สถานะACCEPTED
หลังจากที่ Cloud Search ประมวลผลรายการเสร็จเรียบร้อยแล้วเท่านั้นสุดท้าย ระบบจะเรียกใช้
deleteQueueItems
ในคิว A เพื่อลบรายการ CCloud Search ที่จัดทำดัชนีไว้ก่อนหน้านี้ทั้งหมดที่ยังคงมีป้ายกำกับคิว "A"เมื่อใช้การข้ามผ่านทั้งหมดที่ตามมา คิวที่ใช้สำหรับการจัดทำดัชนีและคิวที่ใช้สำหรับการลบจะถูกสลับ
การดำเนินการตามคิว (SDK ของเครื่องมือเชื่อมต่อ)
Content Connector SDK จะดำเนินการต่างๆ สำหรับการพุชรายการไปยังและดึงรายการจากคิว
หากต้องการรวมและพุชรายการไปยังคิว ให้ใช้คลาสเครื่องมือสร้าง pushItems
คุณไม่จำเป็นต้องดำเนินการใดๆ เป็นพิเศษเพื่อดึงรายการจากคิวสำหรับการประมวลผล แต่ SDK จะดึงรายการจากคิวโดยอัตโนมัติโดยเรียงตามลำดับความสำคัญ โดยใช้เมธอดของคลาส Repository getDoc
การดำเนินการตามคิว (REST API)
REST API มีวิธีพุชรายการไปยังและดึงรายการจากคิว 2 วิธีดังต่อไปนี้
- หากต้องการพุชรายการไปยังคิว ให้ใช้
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