เครื่องมือเชื่อมต่อ 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](https://developers.google.cn/static/cloud-search/images/architecture-queues-add.png?authuser=6&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.google.cn/static/cloud-search/images/architecture-queues-delete.png?authuser=6&hl=th)
ในการข้ามผ่านเริ่มต้น เครื่องมือเชื่อมต่อเนื้อหาจะใช้
items.push
เพื่อพุชรายการ (ข้อมูลเมตาและแฮช) ลงในคิวการจัดทำดัชนี "queue A" ในฐานะNEW_ITEM
เนื่องจากไม่มีอยู่ในคิว ระบบจะติดป้ายกำกับให้กับแต่ละรายการ "A" สำหรับ "queue A" ระบบจะจัดทำดัชนีเนื้อหาไว้ใน Cloud Searchเครื่องมือเชื่อมต่อเนื้อหาใช้
items.poll
ไปยังคิวการสำรวจความคิดเห็น A เพื่อกำหนดรายการที่จะจัดทำดัชนี Cloud Search จะแจ้งเครื่องมือเชื่อมต่อ รายการใดที่จำเป็นต้องจัดทำดัชนีมากที่สุด โดยจัดเรียงตามรหัสสถานะก่อน แล้วจึง ตามเวลาในคิวเครื่องมือเชื่อมต่อจะเรียกรายการเหล่านี้จากที่เก็บและดัชนีบิลด์ คำขอ API
เครื่องมือเชื่อมต่อใช้
items.index
เพื่อจัดทำดัชนีรายการ รายการนี้จะเข้าสู่สถานะACCEPTED
ต่อจาก Cloud Search เท่านั้น ประมวลผลรายการเสร็จเรียบร้อยแล้วdeleteQueueItems
จะเรียกเมธอดใน "queue 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 จะดึงรายการจากคิวโดยอัตโนมัติแทน
โดยใช้
ของที่เก็บ
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