เครื่องมือเชื่อมต่อ SDK และ Google Cloud Search API ช่วยให้คุณสร้างคิวการจัดทำดัชนีของ Cloud Search ที่ใช้เพื่อทำงานต่อไปนี้
รักษาสถานะต่อเอกสาร (สถานะ ค่าแฮช และอื่นๆ) ซึ่งสามารถใช้เพื่อซิงค์ดัชนีกับที่เก็บข้อมูล
ดูแลรักษารายการที่จะจัดทำดัชนีตามที่ค้นพบระหว่างกระบวนการท่องเว็บ
จัดลําดับความสําคัญของรายการในคิวตามสถานะของรายการ
เก็บข้อมูลสถานะเพิ่มเติมเพื่อให้การผสานรวมมีประสิทธิภาพ เช่น จุดตรวจสอบ เปลี่ยนโทเค็น และอื่นๆ
คิวคือป้ายกำกับที่กำหนดให้กับรายการที่จัดทําดัชนี เช่น "default" สําหรับคิวเริ่มต้น หรือ "B" สําหรับคิว B
สถานะและลําดับความสําคัญ
ลำดับความสำคัญของเอกสารในคิวจะอิงตามโค้ด ItemStatus
รหัสที่เป็นไปได้เรียงตามลําดับความสําคัญ (จัดการก่อนจัดการทีหลัง) มีดังนี้
ItemStatus
ERROR
- รายการพบข้อผิดพลาดแบบไม่พร้อมกันระหว่างกระบวนการจัดทำดัชนีและต้องได้รับการจัดทำดัชนีอีกครั้งMODIFIED
- รายการที่ได้รับการจัดทําดัชนีก่อนหน้านี้และได้รับการแก้ไขในที่เก็บตั้งแต่การจัดทําดัชนีครั้งล่าสุดNEW_ITEM
- รายการที่ยังไม่ได้จัดทำดัชนีACCEPTED
- เอกสารที่ได้รับการจัดทําดัชนีก่อนหน้านี้และไม่มีการเปลี่ยนแปลงในที่เก็บตั้งแต่การจัดทําดัชนีครั้งล่าสุด
เมื่อรายการ 2 รายการในคิวมีสถานะเดียวกัน ระบบจะให้ลำดับความสำคัญสูงกว่ากับรายการที่อยู่ในคิวนานที่สุด
ภาพรวมของการใช้คิวการจัดทําดัชนีเพื่อจัดทําดัชนีรายการใหม่หรือรายการที่มีการเปลี่ยนแปลง
รูปที่ 1 แสดงขั้นตอนการจัดทำดัชนีรายการใหม่หรือรายการที่มีการเปลี่ยนแปลงโดยใช้คิวการจัดทําดัชนี ขั้นตอนเหล่านี้แสดงการเรียก REST API สำหรับการเรียก SDK ที่เทียบเท่า โปรดดูการดำเนินการคิว (SDK เครื่องมือเชื่อมต่อ)
ตัวเชื่อมต่อเนื้อหาใช้
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 ประมวลผลรายการดังกล่าวเสร็จสมบูรณ์เท่านั้น
นอกจากนี้ ตัวเชื่อมต่อยังลบรายการได้หากไม่มีอยู่ในที่เก็บ หรือพุชรายการอีกครั้งหากไม่มีการแก้ไขหรือมีข้อผิดพลาดเกี่ยวกับที่เก็บข้อมูลต้นทาง ดูข้อมูลเกี่ยวกับการลบรายการได้ที่ส่วนถัดไป
ภาพรวมของการใช้คิวการจัดทําดัชนีเพื่อลบรายการ
กลยุทธ์การเรียกดูทั้งหมดใช้กระบวนการ 2 คิวในการจัดทำดัชนีรายการและตรวจหาการลบ รูปที่ 2 แสดงขั้นตอนในการลบรายการโดยใช้คิวการจัดทำดัชนี 2 คิว กล่าวโดยละเอียดคือ รูปที่ 2 แสดงการเรียกใช้การท่องเว็บครั้งที่ 2 โดยใช้กลยุทธ์การท่องเว็บทั้งหมด ขั้นตอนเหล่านี้ใช้การเรียก REST API สำหรับการเรียก SDK ที่เทียบเท่า โปรดดูการดำเนินการตามคิว (SDK เครื่องมือเชื่อมต่อ)
ในการเรียกดูครั้งแรก ตัวเชื่อมต่อเนื้อหาจะใช้
items.push
เพื่อส่งรายการ (ข้อมูลเมตาและแฮช) ไปยังคิวการจัดทําดัชนี "คิว ก" ดังNEW_ITEM
เนื่องจากรายการดังกล่าวไม่มีอยู่ในคิว แต่ละรายการจะได้รับป้ายกำกับ "A" สำหรับ "คิว A" ระบบจะจัดทำดัชนีเนื้อหาใน Cloud Searchเครื่องมือเชื่อมต่อเนื้อหาจะใช้
items.poll
เพื่อดำเนินการกับคิว A เพื่อกำหนดรายการที่จะจัดทำดัชนี Cloud Search จะบอกให้ตัวเชื่อมต่อทราบว่ารายการใดจำเป็นต้องได้รับการจัดทำดัชนีมากที่สุด โดยจัดเรียงตามรหัสสถานะก่อน แล้วจัดเรียงตามเวลาที่อยู่ในคิวเครื่องมือเชื่อมต่อจะดึงข้อมูลรายการเหล่านี้จากที่เก็บและสร้างคำขอ API ของดัชนี
เครื่องมือเชื่อมต่อจะใช้
items.index
เพื่อจัดทำดัชนีรายการ รายการจะเข้าสู่สถานะACCEPTED
หลังจากที่ Cloud Search ประมวลผลรายการดังกล่าวเสร็จสมบูรณ์เท่านั้นระบบเรียกใช้เมธอด
deleteQueueItems
ใน "คิว ข." แต่ยังไม่มีการส่งรายการไปยังคิว ข. จึงลบรายการไม่ได้ในการข้ามผ่านแบบเต็มรายการที่สอง เครื่องมือเชื่อมต่อเนื้อหาจะใช้
items.push
เพื่อพุชรายการ (ข้อมูลเมตาและแฮช) ไปยังคิว B- เมื่อมีการพุช ตัวเชื่อมต่อจะมี
type
หรือcontentHash
อย่างชัดเจน - หากเครื่องมือเชื่อมต่อไม่มี
type
อยู่ด้วย Cloud Search จะใช้contentHash
โดยอัตโนมัติเพื่อระบุสถานะของรายการ - หากไม่รู้จักรายการ ระบบจะตั้งค่าสถานะรายการเป็น
NEW_ITEM
และเปลี่ยนป้ายกำกับคิวเป็น "ข." - หากรายการมีอยู่แล้วและค่าแฮชตรงกัน ระบบจะคงสถานะเป็น
ACCEPTED
และเปลี่ยนป้ายกำกับคิวเป็น "ข." - หากรายการมีอยู่แล้วและแฮชแตกต่างกัน สถานะจะเปลี่ยนเป็น
MODIFIED
และเปลี่ยนป้ายกำกับคิวเป็น "ข."
- เมื่อมีการพุช ตัวเชื่อมต่อจะมี
ตัวเชื่อมต่อเนื้อหาใช้
items.poll
เพื่อสำรวจคิวเพื่อระบุรายการที่จะจัดทำดัชนี Cloud Search จะบอกเครื่องมือเชื่อมต่อว่ารายการใดจำเป็นต้องจัดทำดัชนีมากที่สุด โดยจัดเรียงตามรหัสสถานะก่อน แล้วจึงจัดเรียงตามเวลาในการเข้าคิวเครื่องมือเชื่อมต่อจะดึงข้อมูลรายการเหล่านี้จากที่เก็บและสร้างคำขอ API ของดัชนี
เครื่องมือเชื่อมต่อจะใช้
items.index
เพื่อจัดทำดัชนีรายการ รายการจะเข้าสู่สถานะACCEPTED
หลังจากที่ Cloud Search ประมวลผลรายการเสร็จเรียบร้อยแล้วเท่านั้นสุดท้าย ระบบจะเรียกใช้
deleteQueueItems
ในคิว A เพื่อลบรายการ CCloud Search ทั้งหมดที่จัดทําดัชนีไว้ก่อนหน้านี้ซึ่งยังคงมีป้ายกํากับคิว "A"เมื่อทำการสแกนทั้งหมดครั้งถัดไป ระบบจะสลับคิวที่ใช้สำหรับการจัดทําดัชนีกับคิวที่ใช้สําหรับการลบ
การดำเนินการกับคิว (Connector SDK)
Content Connector SDK มีการดำเนินการสำหรับส่งรายการไปยังและดึงรายการออกจากคิว
หากต้องการแพ็กและพุชรายการไปยังคิว ให้ใช้คลาสpushItems
บิลเดอร์
คุณไม่จำเป็นต้องดำเนินการใดๆ เป็นพิเศษเพื่อดึงรายการออกจากคิวเพื่อประมวลผล แต่ SDK จะดึงรายการจากคิวโดยอัตโนมัติโดยเรียงตามลำดับความสำคัญโดยใช้เมธอดของคลาสที่เก็บ getDoc
การดำเนินการกับคิว (REST API)
REST API มี 2 วิธีในการส่งรายการไปยังและดึงรายการออกจากคิว ดังนี้
- หากต้องการส่งรายการไปยังคิว ให้ใช้
Items.push
- หากต้องการสำรวจรายการในคิว ให้ใช้
Items.poll
นอกจากนี้ คุณยังใช้ Items.index
เพื่อพุชรายการไปยังคิวระหว่างการจัดทำดัชนีได้ด้วย รายการที่ส่งไปยังคิวระหว่างการจัดทําดัชนีไม่จําเป็นต้องระบุtype
และระบบจะกําหนดสถานะเป็นACCEPTED
โดยอัตโนมัติ
Items.push
เมธอด Items.push
จะเพิ่มรหัสลงในคิว เรียกใช้เมธอดนี้ได้โดยใช้ค่า type
ที่เฉพาะเจาะจง ซึ่งจะเป็นตัวกำหนดผลลัพธ์ของการดำเนินการ Push ดูรายการค่า 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
คุณสามารถระบุข้อมูลเมตาและ/หรือค่าแฮชของเนื้อหาด้วยคําขอ Push แทนการระบุ type
คิวการจัดทําดัชนีของ Cloud Search จะเปรียบเทียบค่าแฮชที่ระบุกับค่าที่จัดเก็บไว้ซึ่งมีอยู่ในรายการในแหล่งข้อมูล หากไม่ตรงกัน ระบบจะทำเครื่องหมายรายการนั้นเป็น MODIFIED
หากไม่มีรายการที่เกี่ยวข้องในดัชนี สถานะจะเป็น NEW_ITEM
Items.poll
เมธอด Items.poll จะดึงข้อมูลรายการที่มีลําดับความสําคัญสูงสุดออกจากคิว ค่าสถานะที่ขอและที่แสดงจะระบุสถานะของคิวที่มีลําดับความสําคัญที่ขอหรือสถานะของรหัสที่แสดง
โดยค่าเริ่มต้น ระบบอาจแสดงรายการจากส่วนใดก็ได้ของคิว โดยอิงตามลําดับความสําคัญ ระบบจะสงวนรายการที่แสดงผลแต่ละรายการไว้ และจะไม่แสดงผลโดยคำเรียกอื่นๆ ไปยัง Items.poll
จนกว่าจะเป็นไปตามเงื่อนไขข้อใดข้อหนึ่งต่อไปนี้
- การจองหมดเวลา
Items.index
จัดคิวรายการอีกครั้งItems.push
เรียกใช้ด้วยค่าtype
NOT_MODIFIED
,REPOSITORY_ERROR
หรือREQUEUE