เครื่องมือเชื่อมต่อเนื้อหาเป็นโปรแกรมซอฟต์แวร์ที่ใช้เพื่อข้ามผ่านข้อมูลในที่เก็บขององค์กรและป้อนข้อมูลแหล่งข้อมูล Google มีตัวเลือกต่อไปนี้สำหรับการพัฒนาเครื่องมือเชื่อมต่อเนื้อหา
Content Connector SDK ซึ่งเป็นตัวเลือกที่ดี หากคุณกำลังเขียนโปรแกรมใน Java Content Connector SDK คือ Wrapper ของ REST API ช่วยให้คุณสร้างเครื่องมือเชื่อมต่อได้อย่างรวดเร็ว ในการสร้างเครื่องมือเชื่อมต่อเนื้อหาโดยใช้ SDK โปรดดูสร้างเครื่องมือเชื่อมต่อเนื้อหาโดยใช้ Content Connector SDK
REST API หรือไลบรารี API ระดับต่ำ ใช้ตัวเลือกเหล่านี้หากคุณไม่ได้เขียนโปรแกรมใน Java หรือหากโค้ดเบสรองรับ REST API หรือไลบรารีมากกว่า หากต้องการสร้างเครื่องมือเชื่อมต่อเนื้อหาโดยใช้ REST API โปรดดูสร้างเครื่องมือเชื่อมต่อเนื้อหาโดยใช้ REST API
เครื่องมือเชื่อมต่อเนื้อหาทั่วไปจะทำงานต่อไปนี้
- อ่านและประมวลผลพารามิเตอร์การกำหนดค่า
- ดึงข้อมูลที่จัดทำดัชนีได้บางส่วนซึ่งมีชื่อว่า "items" จากที่เก็บเนื้อหาของบุคคลที่สาม
- รวม ACL, ข้อมูลเมตา และข้อมูลเนื้อหาเป็นรายการที่สามารถจัดทำดัชนีได้
- จัดทำดัชนีรายการไปยังแหล่งข้อมูลของ Cloud Search
- (ไม่บังคับ) ฟังการเปลี่ยนแปลงการแจ้งเตือนจากที่เก็บเนื้อหาของบุคคลที่สาม ระบบจะแปลงการแจ้งเตือนการเปลี่ยนแปลงเป็นคำขอการจัดทำดัชนีเพื่อให้แหล่งข้อมูล Cloud Search ซิงค์กับที่เก็บของบุคคลที่สามอยู่เสมอ เครื่องมือเชื่อมต่อจะทำงานนี้ต่อเมื่อที่เก็บรองรับการตรวจหาการเปลี่ยนแปลงเท่านั้น
สร้างเครื่องมือเชื่อมต่อเนื้อหาโดยใช้ Content Connector SDK
ส่วนต่อไปนี้จะอธิบายวิธีสร้างเครื่องมือเชื่อมต่อเนื้อหาโดยใช้ SDK ของ Content Connector
ตั้งค่าทรัพยากร Dependency
คุณต้องรวมทรัพยากร Dependency บางอย่างในไฟล์บิลด์เพื่อใช้ SDK คลิกแท็บด้านล่างเพื่อดูทรัพยากร Dependency สำหรับสภาพแวดล้อมของบิลด์
Maven
<dependency>
<groupId>com.google.enterprise.cloudsearch</groupId>
<artifactId>google-cloudsearch-indexing-connector-sdk</artifactId>
<version>v1-0.0.3</version>
</dependency>
Gradle
compile group: 'com.google.enterprise.cloudsearch',
name: 'google-cloudsearch-indexing-connector-sdk',
version: 'v1-0.0.3'
สร้างการกำหนดค่าเครื่องมือเชื่อมต่อ
เครื่องมือเชื่อมต่อทั้งหมดมีไฟล์การกำหนดค่าที่ประกอบด้วยพารามิเตอร์ที่เครื่องมือเชื่อมต่อใช้ เช่น รหัสสำหรับที่เก็บ ระบบจะกำหนดพารามิเตอร์เป็นคู่คีย์-ค่า เช่น
api.sourceId=1234567890abcdef
Google Cloud Search SDK มีพารามิเตอร์การกำหนดค่าที่ Google มีให้หลายรายการที่เครื่องมือเชื่อมต่อทั้งหมดใช้ คุณต้องประกาศพารามิเตอร์ที่ Google จัดหาต่อไปนี้ในไฟล์การกำหนดค่า
- สำหรับเครื่องมือเชื่อมต่อเนื้อหา คุณต้องประกาศ
api.sourceId
และapi.serviceAccountPrivateKeyFile
เนื่องจากพารามิเตอร์เหล่านี้ระบุตำแหน่งของที่เก็บและคีย์ส่วนตัวที่จำเป็นต่อการเข้าถึงที่เก็บ
- สำหรับเครื่องมือเชื่อมต่อข้อมูลประจำตัว คุณต้องประกาศ
api.identitySourceId
เนื่องจากพารามิเตอร์นี้ระบุตำแหน่งของแหล่งที่มาของข้อมูลประจำตัวภายนอก หากซิงค์ผู้ใช้ คุณต้องประกาศapi.customerId
เป็นรหัสที่ไม่ซ้ำกันสำหรับบัญชี Google Workspace ขององค์กรด้วย
คุณไม่จำเป็นต้องประกาศพารามิเตอร์เหล่านั้นในไฟล์การกำหนดค่า ยกเว้นกรณีที่คุณต้องการลบล้างค่าเริ่มต้นของพารามิเตอร์อื่นๆ ที่ Google มีให้ โปรดดูข้อมูลเพิ่มเติมเกี่ยวกับพารามิเตอร์การกำหนดค่าที่ Google มีให้ เช่น วิธีสร้างรหัสและคีย์บางรายการในพารามิเตอร์การกำหนดค่าที่ Google มีให้
นอกจากนี้ คุณยังกำหนดพารามิเตอร์เฉพาะที่เก็บของคุณเองเพื่อใช้ในไฟล์การกำหนดค่าได้ด้วย
ส่งไฟล์การกำหนดค่าไปยังเครื่องมือเชื่อมต่อ
ตั้งค่าพร็อพเพอร์ตี้ของระบบ config
เพื่อส่งไฟล์การกำหนดค่าไปยังเครื่องมือเชื่อมต่อ คุณสามารถตั้งค่าพร็อพเพอร์ตี้ได้โดยใช้อาร์กิวเมนต์ -D
เมื่อเริ่มต้นเครื่องมือเชื่อมต่อ เช่น คำสั่งต่อไปนี้จะเริ่มเครื่องมือเชื่อมต่อด้วยไฟล์การกำหนดค่า MyConfig.properties
java -classpath myconnector.jar;... -Dconfig=MyConfig.properties MyConnector
หากไม่มีอาร์กิวเมนต์นี้ SDK จะพยายามเข้าถึงไฟล์การกำหนดค่าเริ่มต้นชื่อ connector-config.properties
กำหนดกลยุทธ์การข้ามผ่าน
ฟังก์ชันหลักของเครื่องมือเชื่อมต่อเนื้อหาคือข้ามผ่านที่เก็บและจัดทำดัชนีข้อมูล คุณต้องใช้กลยุทธ์การข้ามผ่านตามขนาดและการจัดวางข้อมูลในที่เก็บ คุณจะออกแบบกลยุทธ์ของตัวคุณเองหรือเลือกจากกลยุทธ์ต่อไปนี้ที่ใช้ใน SDK ก็ได้
- กลยุทธ์การข้ามผ่านเต็มรูปแบบ
กลยุทธ์การข้ามผ่านแบบเต็มรูปแบบจะสแกนที่เก็บทั้งหมดและจัดทำดัชนีรายการทั้งหมด กลยุทธ์นี้มักใช้เมื่อคุณมีที่เก็บขนาดเล็กและมีค่าใช้จ่ายในการดำเนินการข้ามผ่านทั้งหมดทุกครั้งที่จัดทำดัชนี
กลยุทธ์การข้ามผ่านนี้เหมาะสำหรับที่เก็บขนาดเล็กที่มีข้อมูลส่วนใหญ่คงที่และไม่มีลำดับชั้น คุณอาจใช้กลยุทธ์การข้ามผ่านนี้เมื่อการตรวจจับการเปลี่ยนแปลงทำได้ยากหรือที่ที่เก็บไม่รองรับ
- กลยุทธ์การส่งผ่านรายการ
กลยุทธ์การข้ามผ่านรายการจะสแกนที่เก็บทั้งหมด รวมถึงโหนดย่อยทั้งหมด เพื่อกำหนดสถานะของแต่ละรายการ จากนั้นเครื่องมือเชื่อมต่อจะทำการข้ามครั้งที่ 2 และจัดทำดัชนีเฉพาะรายการใหม่หรือที่มีการอัปเดตหลังจากการจัดทำดัชนีครั้งล่าสุด กลยุทธ์นี้มักใช้ในการอัปเดตดัชนีที่มีอยู่ทีละน้อย (แทนที่จะต้องทำการข้ามผ่านแบบสมบูรณ์ทุกครั้งที่คุณอัปเดตดัชนี)
กลยุทธ์การข้ามผ่านนี้เหมาะกับกรณีที่ที่เก็บการเปลี่ยนแปลงทำได้ยากหรือไม่รองรับ คุณมีข้อมูลที่ไม่ใช่ลำดับชั้น และใช้กับชุดข้อมูลขนาดใหญ่มาก
- การส่งผ่านกราฟ
กลยุทธ์การข้ามผ่านกราฟจะสแกนโหนดระดับบนสุดทั้งโหนดเพื่อกำหนดสถานะของแต่ละรายการ จากนั้นเครื่องมือเชื่อมต่อจะรับการส่งครั้งที่ 2 และจัดทำดัชนีเฉพาะรายการในโหนดรากซึ่งเป็นรายการใหม่หรือได้รับการอัปเดตตั้งแต่การจัดทำดัชนีครั้งล่าสุด สุดท้าย เครื่องมือเชื่อมต่อจะส่งรหัสย่อยแล้วจัดทำดัชนีรายการในโหนดย่อยที่เป็นรายการใหม่หรือได้รับการอัปเดต เครื่องมือเชื่อมต่อจะเรียนรู้ไปเรื่อยๆ ผ่านโหนดย่อยทั้งหมดจนกว่าจะจัดการได้ครบทั้งหมดแล้ว โดยทั่วไปแล้วการข้ามผ่านดังกล่าวจะใช้สำหรับที่เก็บแบบลำดับชั้นซึ่งการแสดงรหัสทั้งหมดไม่ได้ใช้งานได้จริง
กลยุทธ์นี้เหมาะสำหรับหากคุณมีข้อมูลตามลำดับชั้นที่ต้องมีการรวบรวมข้อมูล เช่น ไดเรกทอรีหรือหน้าเว็บหลายหน้า
แต่ละกลยุทธ์การข้ามผ่านเหล่านี้จะใช้โดยคลาสเครื่องมือเชื่อมต่อเทมเพลตใน SDK แม้ว่าคุณจะใช้กลยุทธ์การข้ามผ่านของตัวเองได้ แต่เทมเพลตเหล่านี้ช่วยเร่งการพัฒนาเครื่องมือเชื่อมต่อได้อย่างมาก ในการสร้างเครื่องมือเชื่อมต่อโดยใช้เทมเพลต ให้ไปที่ส่วนที่เกี่ยวข้องกับกลยุทธ์การข้ามผ่าน
- สร้างเครื่องมือเชื่อมต่อการข้ามผ่านแบบเต็มโดยใช้คลาสเทมเพลต
- สร้างเครื่องมือเชื่อมต่อการข้ามผ่านรายการโดยใช้คลาสเทมเพลต
- สร้างเครื่องมือเชื่อมต่อการข้ามผ่านกราฟโดยใช้คลาสเทมเพลต
สร้างเครื่องมือเชื่อมต่อการข้ามผ่านแบบสมบูรณ์โดยใช้คลาสเทมเพลต
เอกสารส่วนนี้หมายถึงข้อมูลโค้ดจากตัวอย่าง FullTraversalSample
ใช้งานจุดแรกเข้าของเครื่องมือเชื่อมต่อ
จุดแรกเข้าของเครื่องมือเชื่อมต่อคือเมธอด main()
งานหลักของเมธอดนี้คือการสร้างอินสแตนซ์ของคลาส Application
และเรียกใช้เมธอด start()
เพื่อเรียกใช้เครื่องมือเชื่อมต่อ
ก่อนเรียกใช้
application.start()
ให้ใช้คลาส
IndexingApplication.Builder
เพื่อสร้างอินสแตนซ์
FullTraversalConnector
เทมเพลต FullTraversalConnector
ยอมรับออบเจ็กต์ Repository
ที่มีเมธอดที่คุณใช้ ข้อมูลโค้ดต่อไปนี้จะแสดงวิธีใช้เมธอด main()
SDK จะเรียกใช้เมธอด initConfig()
ในเบื้องหลังหลังจากที่เรียกใช้เมธอด main()
ของเครื่องมือเชื่อมต่อ Application.build
เมธอด initConfig()
จะทํางานต่อไปนี้
- เรียกใช้เมธอด
Configuation.isInitialized()
เพื่อให้มั่นใจว่าConfiguration
ยังไม่ได้เริ่มต้น - เริ่มต้นออบเจ็กต์
Configuration
ด้วยคู่คีย์-ค่าที่ Google จัดหา คู่คีย์-ค่าแต่ละคู่จะเก็บไว้ในออบเจ็กต์ConfigValue
ภายในออบเจ็กต์Configuration
ใช้อินเทอร์เฟซ Repository
วัตถุประสงค์เพียงอย่างเดียวของออบเจ็กต์ Repository
คือเพื่อดำเนินการข้ามผ่านและการจัดทำดัชนีรายการที่เก็บ เมื่อใช้เทมเพลต คุณต้องลบล้างเมธอดภายในอินเทอร์เฟซ Repository
เท่านั้นเพื่อสร้างเครื่องมือเชื่อมต่อเนื้อหา วิธีการที่คุณลบล้างจะขึ้นอยู่กับกลยุทธ์เทมเพลตและการข้ามผ่านที่คุณใช้ สำหรับ FullTraversalConnector
ให้ลบล้างเมธอดต่อไปนี้
เมธอด
init()
หากต้องการดำเนินการตั้งค่าและเริ่มต้นพื้นที่เก็บข้อมูล ให้ลบล้างเมธอดinit()
เมธอด
getAllDocs()
หากต้องการข้ามผ่านและจัดทำดัชนีรายการทั้งหมดในที่เก็บข้อมูล ให้ลบล้างเมธอดgetAllDocs()
เมธอดนี้จะถูกเรียกครั้งเดียวสำหรับแต่ละการส่งผ่านตามกำหนดการ (ตามที่กำหนดโดยการกำหนดค่า)(ไม่บังคับ) เมธอด
getChanges()
หากที่เก็บรองรับการตรวจหาการเปลี่ยนแปลง ให้ลบล้างเมธอดgetChanges()
ระบบจะเรียกวิธีนี้เพียงครั้งเดียวสำหรับการข้ามผ่านส่วนเพิ่มตามกำหนดการแต่ละรายการ (ตามที่กำหนดโดยการกำหนดค่า) เพื่อเรียกข้อมูลรายการที่แก้ไขและจัดทำดัชนี(ไม่บังคับ) เมธอด
close()
หากต้องการล้างข้อมูลที่เก็บ ให้ลบล้างเมธอดclose()
ระบบจะเรียกวิธีนี้เพียงครั้งเดียวระหว่างการปิดเครื่องเชื่อมต่อ
เมธอดแต่ละเมธอดของออบเจ็กต์ Repository
แสดงผลออบเจ็กต์ ApiOperation
บางประเภท ออบเจ็กต์ ApiOperation
ดำเนินการในรูปแบบการเรียก IndexingService.indexItem()
เดียวหรือหลายรายการให้จัดทำดัชนีที่เก็บจริง
รับพารามิเตอร์การกำหนดค่าที่กำหนดเอง
คุณจะต้องรับพารามิเตอร์ที่กำหนดเองจากออบเจ็กต์ Configuration
เพื่อให้สอดคล้องกับการกำหนดค่าของเครื่องมือเชื่อมต่อ โดยปกติงานนี้จะทำในเมธอด init()
ของชั้นเรียน Repository
คลาส Configuration
มีหลายวิธีในการรับข้อมูลประเภทต่างๆ จากการกำหนดค่า แต่ละวิธีจะแสดงผลออบเจ็กต์ ConfigValue
จากนั้นจะใช้เมธอด get()
ของออบเจ็กต์ ConfigValue
เพื่อดึงค่าจริง
ข้อมูลโค้ดจาก FullTraversalSample
ต่อไปนี้แสดงวิธีดึงค่าจำนวนเต็มที่กำหนดเองค่าเดียวจากออบเจ็กต์ Configuration
หากต้องการรับและแยกวิเคราะห์พารามิเตอร์ที่มีหลายค่า ให้ใช้โปรแกรมแยกวิเคราะห์ประเภท Configuration
ประเภทใดประเภทหนึ่งเพื่อแยกวิเคราะห์ข้อมูลเป็นกลุ่มที่ไม่ต่อเนื่อง
ข้อมูลโค้ดจากเครื่องมือเชื่อมต่อบทแนะนำจะใช้เมธอด getMultiValue
เพื่อรับชื่อที่เก็บ GitHub แบบรายการ
ดำเนินการข้ามผ่านโดยสมบูรณ์
ลบล้าง getAllDocs()
เพื่อดำเนินการข้ามผ่านโดยสมบูรณ์และจัดทำดัชนีที่เก็บ เมธอด getAllDocs()
ยอมรับจุดเช็คพอยท์ ระบบจะใช้จุดตรวจสอบเพื่อดำเนินการจัดทำดัชนีต่อที่รายการเฉพาะหากกระบวนการหยุดชะงัก สำหรับแต่ละรายการในที่เก็บ ให้ทำตามขั้นตอนต่อไปนี้ในเมธอด getAllDocs()
- ตั้งค่าสิทธิ์
- ตั้งค่าข้อมูลเมตาสำหรับรายการที่คุณกำลังจัดทำดัชนี
- รวมข้อมูลเมตาและรายการลงในไฟล์เดียวที่จัดทำดัชนีได้
RepositoryDoc
- จัดแพ็กเกจแต่ละรายการที่จัดทำดัชนีได้ลงในตัววนซ้ำที่ส่งคืนโดยเมธอด
getAllDocs()
โปรดทราบว่าจริงๆ แล้วgetAllDocs()
จะแสดงผลCheckpointCloseableIterable
ซึ่งเป็นการทำซ้ำออบเจ็กต์ApiOperation
โดยแต่ละออบเจ็กต์จะแสดงคำขอ API ที่ดำเนินการในRepositoryDoc
เช่น การจัดทำดัชนี
หากชุดรายการมีขนาดใหญ่เกินกว่าที่จะประมวลผลในการเรียกครั้งเดียว ให้ใส่จุดตรวจสอบและตั้งค่า hasMore(true)
เพื่อระบุว่ามีรายการเพิ่มเติมที่พร้อมจัดทำดัชนี
ตั้งค่าสิทธิ์สำหรับรายการ
ที่เก็บของคุณใช้รายการควบคุมการเข้าถึง (ACL) เพื่อระบุผู้ใช้หรือกลุ่มที่มีสิทธิ์เข้าถึงรายการ ACL คือรายการรหัสของกลุ่มหรือผู้ใช้ที่เข้าถึงรายการดังกล่าวได้
คุณต้องทำสำเนา ACL ที่ที่เก็บของคุณใช้เพื่อให้แน่ใจว่ามีเพียงผู้ใช้ที่มีสิทธิ์เข้าถึงรายการเท่านั้นที่สามารถดูรายการนั้นในผลการค้นหา คุณต้องระบุ ACL ของรายการเมื่อจัดทำดัชนีรายการเพื่อให้ Google Cloud Search มีข้อมูลที่จำเป็นในการให้ระดับการเข้าถึงรายการที่ถูกต้อง
Content Connector SDK มีชุดคลาสและเมธอด ACL ที่หลากหลายเพื่อสร้างโมเดล ACL ของที่เก็บส่วนใหญ่ คุณต้องวิเคราะห์ ACL สำหรับแต่ละรายการในที่เก็บ และสร้าง ACL ที่เกี่ยวข้องสำหรับ Google Cloud Search เมื่อคุณจัดทำดัชนีรายการ หาก ACL ของที่เก็บใช้แนวคิดต่างๆ เช่น การสืบทอด ACL การสร้างโมเดลที่ ACL อาจเป็นเรื่องยาก ดูข้อมูลเพิ่มเติมเกี่ยวกับ ACL ของ Google Cloud Search ได้ที่ ACL ของ Google Cloud Search
หมายเหตุ: Cloud Search Indexing API รองรับ ACL แบบโดเมนเดียว ไม่รองรับ ACL ข้ามโดเมน ใช้คลาส Acl.Builder
เพื่อตั้งค่าการเข้าถึงแต่ละรายการโดยใช้ ACL ข้อมูลโค้ดต่อไปนี้นำมาจากตัวอย่างการส่งผ่านทั้งหมด ทำให้ผู้ใช้หรือ "ผู้ใช้หลัก" ทั้งหมด
(getCustomerPrincipal()
)
เป็น "ผู้อ่าน" ของรายการทั้งหมด
(.setReaders()
)
เมื่อทำการค้นหา
คุณต้องทำความเข้าใจ ACL เพื่อสร้างโมเดล ACL สำหรับที่เก็บอย่างถูกต้อง เช่น คุณอาจกำลังจัดทำดัชนีไฟล์ภายในระบบไฟล์ที่ใช้โมเดลการรับค่าบางประเภทที่โฟลเดอร์ย่อยจะรับค่าสิทธิ์จากโฟลเดอร์หลัก การสร้างแบบจำลองการสืบทอด ACL ต้องมีข้อมูลเพิ่มเติมที่ครอบคลุมใน ACL ของ Google Cloud Search
ตั้งค่าข้อมูลเมตาสำหรับรายการ
ระบบจะจัดเก็บข้อมูลเมตาไว้ในออบเจ็กต์ Item
หากต้องการสร้าง Item
คุณต้องมีรหัสสตริงที่ไม่ซ้ำกัน, ประเภทรายการ, ACL, URL และเวอร์ชันขั้นต่ำของสินค้าดังกล่าว
ข้อมูลโค้ดต่อไปนี้แสดงวิธีสร้าง Item
โดยใช้คลาสตัวช่วยของ
IndexingItemBuilder
สร้างรายการที่จัดทำดัชนีได้
เมื่อตั้งค่าข้อมูลเมตาสำหรับรายการแล้ว คุณจะสร้างรายการจริงที่จัดทำดัชนีได้โดยใช้คลาส RepositoryDoc.Builder
ตัวอย่างต่อไปนี้แสดงวิธีสร้างรายการเดี่ยวที่จัดทำดัชนีได้
RepositoryDoc
เป็น ApiOperation
ประเภทหนึ่งที่ดำเนินการตามคำขอ IndexingService.indexItem()
จริง
นอกจากนี้ คุณยังใช้เมธอด setRequestMode()
ของคลาส RepositoryDoc.Builder
เพื่อระบุคำขอการจัดทำดัชนีเป็น ASYNCHRONOUS
หรือ SYNCHRONOUS
ได้ด้วย โดยทำดังนี้
ASYNCHRONOUS
- โหมดอะซิงโครนัสทำให้เกิดความล่าช้าในการจัดทำดัชนีเพื่อแสดงและรองรับโควต้าอัตราการส่งข้อมูลจำนวนมากสำหรับคำขอจัดทำดัชนี เราขอแนะนำโหมดอะซิงโครนัสสำหรับการจัดทำดัชนีเริ่มต้น (โฆษณาทดแทน) ของที่เก็บทั้งหมด
SYNCHRONOUS
- โหมดซิงโครนัสทำให้เวลาในการตอบสนองสำหรับการจัดทำดัชนีเพื่อแสดงโฆษณาสั้นลง และรองรับโควต้าอัตราการส่งข้อมูลที่จำกัด เราขอแนะนำโหมดซิงโครนัสสำหรับการจัดทำดัชนีการอัปเดตและการเปลี่ยนแปลงที่เก็บ หากไม่ระบุ โหมดคำขอจะมีค่าเริ่มต้นเป็น
SYNCHRONOUS
จัดแพ็กเกจแต่ละรายการที่จัดทำดัชนีได้ในตัวทำซ้ำ
เมธอด getAllDocs()
จะแสดงผล Iterator
โดยเฉพาะออบเจ็กต์ CheckpointCloseableIterable
ของ RepositoryDoc
คุณใช้คลาส CheckpointClosableIterableImpl.Builder
เพื่อสร้างและแสดงผลตัววนซ้ำได้ ข้อมูลโค้ดต่อไปนี้จะแสดงวิธีสร้าง
และแสดงผลตัววนซ้ำ
SDK เรียกใช้การเรียกใช้การจัดทำดัชนีแต่ละครั้งที่อยู่ภายในตัวทำซ้ำ
ขั้นตอนถัดไป
ขั้นตอนถัดไปที่ทำได้มีดังนี้
- (ไม่บังคับ) หากอัตราการส่งข้อมูลการจัดทำดัชนีดูเหมือนช้า โปรดดูเพิ่มอัตราการจัดทำดัชนีสำหรับ
FullTraversalConnector
- (ไม่บังคับ) ใช้วิธีการ
close()
เพื่อปล่อยทรัพยากรก่อนที่จะปิดเครื่อง - (ไม่บังคับ) สร้างเครื่องมือเชื่อมต่อข้อมูลประจำตัวโดยใช้ Content Connector SDK
สร้างเครื่องมือเชื่อมต่อการข้ามผ่านรายการโดยใช้คลาสเทมเพลต
คิวการจัดทำดัชนีของ Cloud Search จะใช้เพื่อเก็บรหัสและค่าแฮชที่ไม่บังคับสำหรับแต่ละรายการในที่เก็บ เครื่องมือเชื่อมต่อการข้ามผ่านรายการจะพุชรหัสรายการไปยังคิวการจัดทำดัชนีของ Google Cloud Search และเรียกข้อมูลทีละรายการเพื่อการจัดทำดัชนี Google Cloud Search จะเก็บคิวและเปรียบเทียบเนื้อหาของคิวเพื่อระบุสถานะของรายการ เช่น มีการลบรายการออกจากที่เก็บหรือไม่ ดูข้อมูลเพิ่มเติมเกี่ยวกับคิวการจัดทำดัชนีของ Cloud Search ได้ที่คิวการจัดทำดัชนีของ Cloud Search
เอกสารส่วนนี้หมายถึงข้อมูลโค้ดจากตัวอย่าง ListTraversalSample
ใช้งานจุดแรกเข้าของเครื่องมือเชื่อมต่อ
จุดแรกเข้าของเครื่องมือเชื่อมต่อคือเมธอด main()
งานหลักของเมธอดนี้คือการสร้างอินสแตนซ์ของคลาส Application
และเรียกใช้เมธอด start()
เพื่อเรียกใช้เครื่องมือเชื่อมต่อ
ก่อนเรียกใช้
application.start()
ให้ใช้คลาส
IndexingApplication.Builder
เพื่อสร้างอินสแตนซ์
ListingConnector
เทมเพลต ListingConnector
ยอมรับออบเจ็กต์ Repository
ที่มีเมธอดที่คุณจะใช้ ข้อมูลโค้ดต่อไปนี้แสดงวิธียืนยัน ListingConnector
และ Repository
ที่เกี่ยวข้อง
SDK จะเรียกใช้เมธอด initConfig()
ในเบื้องหลังหลังจากที่เรียกใช้เมธอด main()
ของเครื่องมือเชื่อมต่อ Application.build
เมธอด initConfig()
:
- เรียกใช้เมธอด
Configuation.isInitialized()
เพื่อให้มั่นใจว่าConfiguration
ยังไม่ได้เริ่มต้น - เริ่มต้นออบเจ็กต์
Configuration
ด้วยคู่คีย์-ค่าที่ Google จัดหา คู่คีย์-ค่าแต่ละคู่จะเก็บไว้ในออบเจ็กต์ConfigValue
ภายในออบเจ็กต์Configuration
ใช้อินเทอร์เฟซ Repository
วัตถุประสงค์เพียงอย่างเดียวของออบเจ็กต์ Repository
คือเพื่อดำเนินการข้ามผ่านและการจัดทำดัชนีรายการที่เก็บ เมื่อใช้เทมเพลต คุณต้องลบล้างเมธอดภายในอินเทอร์เฟซ Repository
เท่านั้นเพื่อสร้างเครื่องมือเชื่อมต่อเนื้อหา
วิธีการที่คุณลบล้างจะขึ้นอยู่กับเทมเพลตและกลยุทธ์การข้ามผ่านที่คุณใช้ สำหรับ ListingConnector
ให้ลบล้างเมธอดต่อไปนี้
เมธอด
init()
หากต้องการดำเนินการตั้งค่าและเริ่มต้นพื้นที่เก็บข้อมูล ให้ลบล้างเมธอดinit()
เมธอด
getIds()
หากต้องการเรียกข้อมูลรหัสและค่าแฮชสำหรับระเบียนทั้งหมดในที่เก็บ ให้ลบล้างเมธอดgetIds()
เมธอด
getDoc()
หากต้องการเพิ่มรายการใหม่ อัปเดต แก้ไข หรือลบรายการออกจากดัชนี ให้ลบล้างเมธอดgetDoc()
(ไม่บังคับ) เมธอด
getChanges()
หากที่เก็บรองรับการตรวจหาการเปลี่ยนแปลง ให้ลบล้างเมธอดgetChanges()
ระบบจะเรียกวิธีนี้เพียงครั้งเดียวสำหรับการข้ามผ่านส่วนเพิ่มตามกำหนดการแต่ละรายการ (ตามที่กำหนดโดยการกำหนดค่า) เพื่อเรียกข้อมูลรายการที่แก้ไขและจัดทำดัชนี(ไม่บังคับ) เมธอด
close()
หากต้องการล้างข้อมูลที่เก็บ ให้ลบล้างเมธอดclose()
ระบบจะเรียกวิธีนี้เพียงครั้งเดียวระหว่างการปิดเครื่องเชื่อมต่อ
เมธอดแต่ละเมธอดของออบเจ็กต์ Repository
แสดงผลออบเจ็กต์ ApiOperation
บางประเภท ออบเจ็กต์ ApiOperation
ดำเนินการในรูปแบบการเรียก IndexingService.indexItem()
เดียวหรือหลายรายการให้จัดทำดัชนีที่เก็บจริง
รับพารามิเตอร์การกำหนดค่าที่กำหนดเอง
คุณจะต้องรับพารามิเตอร์ที่กำหนดเองจากออบเจ็กต์ Configuration
เพื่อให้สอดคล้องกับการกำหนดค่าของเครื่องมือเชื่อมต่อ โดยปกติงานนี้จะทำในเมธอด init()
ของชั้นเรียน Repository
คลาส Configuration
มีหลายวิธีในการรับข้อมูลประเภทต่างๆ จากการกำหนดค่า แต่ละวิธีจะแสดงผลออบเจ็กต์ ConfigValue
จากนั้นจะใช้เมธอด get()
ของออบเจ็กต์ ConfigValue
เพื่อดึงค่าจริง
ข้อมูลโค้ดจาก FullTraversalSample
ต่อไปนี้แสดงวิธีดึงค่าจำนวนเต็มที่กำหนดเองค่าเดียวจากออบเจ็กต์ Configuration
หากต้องการรับและแยกวิเคราะห์พารามิเตอร์ที่มีหลายค่า ให้ใช้โปรแกรมแยกวิเคราะห์ประเภท Configuration
ประเภทใดประเภทหนึ่งเพื่อแยกวิเคราะห์ข้อมูลเป็นกลุ่มที่ไม่ต่อเนื่อง
ข้อมูลโค้ดจากเครื่องมือเชื่อมต่อบทแนะนำจะใช้เมธอด getMultiValue
เพื่อรับชื่อที่เก็บ GitHub แบบรายการ
ดำเนินการข้ามผ่านรายการ
ลบล้างเมธอด getIds()
เพื่อเรียกข้อมูลรหัสและค่าแฮชสำหรับระเบียนทั้งหมดในที่เก็บ
เมธอด getIds()
ยอมรับจุดเช็คพอยท์ ระบบจะใช้จุดตรวจสอบเพื่อกลับไปจัดทำดัชนีที่รายการที่เจาะจงต่อหากกระบวนการหยุดชะงัก
จากนั้น ลบล้างเมธอด getDoc()
เพื่อจัดการแต่ละรายการในคิวการจัดทำดัชนีของ Cloud Search
รหัสสินค้าพุชและค่าแฮช
ลบล้าง getIds()
เพื่อดึงข้อมูลรหัสสินค้าและค่าแฮชเนื้อหาที่เชื่อมโยงจากที่เก็บ จากนั้นระบบจะรวมคู่รหัสและค่าแฮชไว้ในคำขอการดำเนินการพุชไปยังคิวการจัดทำดัชนีของ Cloud Search โดยทั่วไปแล้ว ระบบจะพุชรหัสรูทหรือรหัสหลักก่อน ตามด้วยรหัสย่อยจนกว่าจะประมวลผลรายการทั้งลำดับชั้นแล้ว
เมธอด getIds()
จะยอมรับจุดเช็คพอยท์ที่แสดงรายการสุดท้ายที่จะจัดทำดัชนี คุณจะใช้จุดตรวจสอบเพื่อดำเนินการจัดทำดัชนีต่อที่รายการเฉพาะได้ หากกระบวนการหยุดชะงัก สำหรับแต่ละรายการในที่เก็บ ให้ทำตามขั้นตอนต่อไปนี้ในเมธอด getIds()
- รับรหัสรายการแต่ละรายการและค่าแฮชที่เกี่ยวข้องจากที่เก็บ
- จัดคู่รหัสและค่าแฮชแต่ละรายการเป็น
PushItems
- รวม
PushItems
แต่ละรายการเข้าด้วยกันเป็นตัววนซ้ำที่แสดงผลโดยเมธอดgetIds()
โปรดทราบว่าจริงๆ แล้วgetIds()
จะแสดงผลCheckpointCloseableIterable
ซึ่งเป็นการทำซ้ำออบเจ็กต์ApiOperation
โดยแต่ละออบเจ็กต์จะแสดงคำขอ API ที่ดำเนินการในRepositoryDoc
เช่น พุชรายการไปยังคิว
ข้อมูลโค้ดต่อไปนี้แสดงวิธีรับรหัสสินค้าและค่าแฮชแต่ละรายการ แล้วแทรกลงใน PushItems
PushItems
เป็นคำขอ ApiOperation
เพื่อพุชรายการไปยังคิวการจัดทำดัชนีของ Cloud Search
ข้อมูลโค้ดต่อไปนี้แสดงวิธีใช้คลาส PushItems.Builder
เพื่อรวมรหัสและค่าแฮชไว้ในพุชเดียวApiOperation
ระบบจะพุชรายการไปยังคิวการจัดทำดัชนีของ Cloud Search เพื่อประมวลผลต่อไป
ดึงข้อมูลและจัดการแต่ละรายการ
ลบล้าง getDoc()
เพื่อจัดการแต่ละรายการในคิวการจัดทำดัชนีของ Cloud Search
รายการอาจเป็นรายการใหม่ แก้ไข ไม่เปลี่ยนแปลง หรือไม่มีอยู่ในที่เก็บต้นทางอีกต่อไป ดึงข้อมูลและจัดทำดัชนีแต่ละรายการที่เป็นรายการใหม่หรือที่มีการแก้ไข นำรายการออกจากดัชนีที่ไม่มีอยู่ในที่เก็บต้นทางแล้ว
เมธอด getDoc()
จะยอมรับรายการจากคิวการจัดทำดัชนีของ Google Cloud Search สำหรับแต่ละรายการในคิว ให้ทำตามขั้นตอนต่อไปนี้ในเมธอด getDoc()
ตรวจสอบว่ามีรหัสของรายการนั้นในคิวการจัดทำดัชนีของ Cloud Search ในที่เก็บหรือไม่ หากไม่ ให้ลบรายการออกจากดัชนี
สำรวจดัชนีเพื่อดูสถานะรายการ และหากไม่มีการเปลี่ยนแปลง (
ACCEPTED
) ไม่ต้องดำเนินการใดๆดัชนีมีการเปลี่ยนแปลงหรือรายการใหม่:
- ตั้งค่าสิทธิ์
- ตั้งค่าข้อมูลเมตาสำหรับรายการที่คุณกำลังจัดทำดัชนี
- รวมข้อมูลเมตาและรายการลงในไฟล์เดียวที่จัดทำดัชนีได้
RepositoryDoc
- ส่งคืน
RepositoryDoc
หมายเหตุ: เทมเพลต ListingConnector
ไม่รองรับการแสดงผล null
ในเมธอด getDoc()
แสดงผลลัพธ์ null
รายการใน NullPointerException.
จัดการรายการที่ลบไปแล้ว
ข้อมูลโค้ดต่อไปนี้แสดงวิธีตรวจสอบว่ามีรายการอยู่ในที่เก็บหรือไม่ และหากไม่อยู่ในที่เก็บ ให้ลบออก
โปรดทราบว่า documents
เป็นโครงสร้างข้อมูลที่แสดงถึงที่เก็บ หากไม่พบ documentID
ใน documents
ให้แสดงผล APIOperations.deleteItem(resourceName)
เพื่อลบรายการออกจากดัชนี
จัดการรายการที่ไม่เปลี่ยนแปลง
ข้อมูลโค้ดต่อไปนี้แสดงวิธีสำรวจสถานะรายการในคิวการจัดทำดัชนีของ Cloud Search และจัดการรายการที่ไม่มีการเปลี่ยนแปลง
หากต้องการดูว่าไม่มีการแก้ไขรายการใด ให้ตรวจสอบสถานะของรายการ รวมทั้งข้อมูลเมตาอื่นๆ ที่อาจบ่งชี้ถึงการเปลี่ยนแปลง ในตัวอย่างนี้ แฮชข้อมูลเมตาใช้เพื่อระบุว่ามีการเปลี่ยนแปลงรายการนั้นหรือไม่
ตั้งค่าสิทธิ์สำหรับรายการ
ที่เก็บของคุณใช้รายการควบคุมการเข้าถึง (ACL) เพื่อระบุผู้ใช้หรือกลุ่มที่มีสิทธิ์เข้าถึงรายการ ACL คือรายการรหัสของกลุ่มหรือผู้ใช้ที่เข้าถึงรายการดังกล่าวได้
คุณต้องทำสำเนา ACL ที่ที่เก็บของคุณใช้เพื่อให้แน่ใจว่ามีเพียงผู้ใช้ที่มีสิทธิ์เข้าถึงรายการเท่านั้นที่สามารถดูรายการนั้นในผลการค้นหา คุณต้องระบุ ACL ของรายการเมื่อจัดทำดัชนีรายการเพื่อให้ Google Cloud Search มีข้อมูลที่จำเป็นในการให้ระดับการเข้าถึงรายการที่ถูกต้อง
Content Connector SDK มีชุดคลาสและเมธอด ACL ที่หลากหลายเพื่อสร้างโมเดล ACL ของที่เก็บส่วนใหญ่ คุณต้องวิเคราะห์ ACL สำหรับแต่ละรายการในที่เก็บ และสร้าง ACL ที่เกี่ยวข้องสำหรับ Google Cloud Search เมื่อคุณจัดทำดัชนีรายการ หาก ACL ของที่เก็บใช้แนวคิดต่างๆ เช่น การสืบทอด ACL การสร้างโมเดลที่ ACL อาจเป็นเรื่องยาก ดูข้อมูลเพิ่มเติมเกี่ยวกับ ACL ของ Google Cloud Search ได้ที่ ACL ของ Google Cloud Search
หมายเหตุ: Cloud Search Indexing API รองรับ ACL แบบโดเมนเดียว ไม่รองรับ ACL ข้ามโดเมน ใช้คลาส Acl.Builder
เพื่อตั้งค่าการเข้าถึงแต่ละรายการโดยใช้ ACL ข้อมูลโค้ดต่อไปนี้นำมาจากตัวอย่างการส่งผ่านทั้งหมด ทำให้ผู้ใช้หรือ "ผู้ใช้หลัก" ทั้งหมด
(getCustomerPrincipal()
)
เป็น "ผู้อ่าน" ของรายการทั้งหมด
(.setReaders()
)
เมื่อทำการค้นหา
คุณต้องทำความเข้าใจ ACL เพื่อสร้างโมเดล ACL สำหรับที่เก็บอย่างถูกต้อง เช่น คุณอาจกำลังจัดทำดัชนีไฟล์ภายในระบบไฟล์ที่ใช้โมเดลการรับค่าบางประเภทที่โฟลเดอร์ย่อยจะรับค่าสิทธิ์จากโฟลเดอร์หลัก การสร้างแบบจำลองการสืบทอด ACL ต้องมีข้อมูลเพิ่มเติมที่ครอบคลุมใน ACL ของ Google Cloud Search
ตั้งค่าข้อมูลเมตาสำหรับรายการ
ระบบจะจัดเก็บข้อมูลเมตาไว้ในออบเจ็กต์ Item
หากต้องการสร้าง Item
คุณต้องมีรหัสสตริงที่ไม่ซ้ำกัน, ประเภทรายการ, ACL, URL และเวอร์ชันขั้นต่ำของสินค้าดังกล่าว
ข้อมูลโค้ดต่อไปนี้แสดงวิธีสร้าง Item
โดยใช้คลาสตัวช่วยของ
IndexingItemBuilder
สร้างรายการที่จัดทำดัชนีได้
เมื่อคุณตั้งค่าข้อมูลเมตาสำหรับรายการแล้ว คุณสามารถสร้างรายการจริงที่จัดทำดัชนีได้โดยใช้ RepositoryDoc.Builder
ตัวอย่างต่อไปนี้แสดงวิธีสร้างรายการเดี่ยวที่จัดทำดัชนีได้
RepositoryDoc
คือ ApiOperation
ประเภทหนึ่งที่ดำเนินการตามคำขอ IndexingService.indexItem()
ที่แท้จริง
นอกจากนี้ คุณยังใช้เมธอด setRequestMode()
ของคลาส RepositoryDoc.Builder
เพื่อระบุคำขอการจัดทำดัชนีเป็น ASYNCHRONOUS
หรือ SYNCHRONOUS
ได้ด้วย โดยทำดังนี้
ASYNCHRONOUS
- โหมดอะซิงโครนัสทำให้เกิดความล่าช้าในการจัดทำดัชนีเพื่อแสดงและรองรับโควต้าอัตราการส่งข้อมูลจำนวนมากสำหรับคำขอจัดทำดัชนี เราขอแนะนำโหมดอะซิงโครนัสสำหรับการจัดทำดัชนีเริ่มต้น (โฆษณาทดแทน) ของที่เก็บทั้งหมด
SYNCHRONOUS
- โหมดซิงโครนัสทำให้เวลาในการตอบสนองสำหรับการจัดทำดัชนีเพื่อแสดงโฆษณาสั้นลง และรองรับโควต้าอัตราการส่งข้อมูลที่จำกัด เราขอแนะนำโหมดซิงโครนัสสำหรับการจัดทำดัชนีการอัปเดตและการเปลี่ยนแปลงที่เก็บ หากไม่ระบุ โหมดคำขอจะมีค่าเริ่มต้นเป็น
SYNCHRONOUS
ขั้นตอนถัดไป
ขั้นตอนถัดไปที่ทำได้มีดังนี้
- (ไม่บังคับ) ใช้วิธีการ
close()
เพื่อปล่อยทรัพยากรก่อนที่จะปิดเครื่อง - (ไม่บังคับ) สร้างเครื่องมือเชื่อมต่อข้อมูลประจำตัวโดยใช้ Content Connector SDK
สร้างเครื่องมือเชื่อมต่อการข้ามผ่านกราฟโดยใช้คลาสเทมเพลต
คิวการจัดทำดัชนีของ Cloud Search จะใช้เพื่อเก็บรหัสและค่าแฮชที่ไม่บังคับสำหรับแต่ละรายการในที่เก็บ เครื่องมือเชื่อมต่อการข้ามผ่านกราฟจะพุชรหัสรายการไปยังคิวการจัดทำดัชนีของ Google Cloud Search และเรียกข้อมูลทีละรายการสำหรับการจัดทำดัชนี Google Cloud Search จะเก็บคิวและเปรียบเทียบเนื้อหาของคิวเพื่อระบุสถานะของรายการ เช่น มีการลบรายการออกจากที่เก็บหรือไม่ ดูข้อมูลเพิ่มเติมเกี่ยวกับคิวการจัดทำดัชนีของ Cloud Search ได้ที่คิวการจัดทำดัชนีของ Google Cloud Search
ในระหว่างดัชนี ระบบจะดึงเนื้อหาของรายการจากที่เก็บข้อมูล และจะมีการพุชรหัสรายการย่อยไปยังคิว เครื่องมือเชื่อมต่อจะประมวลผลรหัสหลักและย่อยซ้ำจนกว่าจะจัดการรายการทั้งหมด
เอกสารส่วนนี้หมายถึงข้อมูลโค้ดจากตัวอย่าง GraphTraversalSample
ใช้งานจุดแรกเข้าของเครื่องมือเชื่อมต่อ
จุดแรกเข้าของเครื่องมือเชื่อมต่อคือเมธอด main()
งานหลักของเมธอดนี้คือการสร้างอินสแตนซ์ของคลาส Application
และเรียกใช้เมธอด start()
เพื่อเรียกใช้เครื่องมือเชื่อมต่อ
ก่อนเรียกใช้
application.start()
ให้ใช้คลาส
IndexingApplication.Builder
เพื่อสร้างเทมเพลต ListingConnector
ListingConnector
ยอมรับออบเจ็กต์ Repository
ที่มีเมธอดที่คุณใช้
ข้อมูลโค้ดต่อไปนี้แสดงวิธียืนยัน ListingConnector
และ Repository
ที่เกี่ยวข้อง
SDK จะเรียกใช้เมธอด initConfig()
ในเบื้องหลังหลังจากที่เรียกใช้เมธอด main()
ของเครื่องมือเชื่อมต่อ Application.build
เมธอด initConfig()
:
- เรียกใช้เมธอด
Configuation.isInitialized()
เพื่อให้มั่นใจว่าConfiguration
ยังไม่ได้เริ่มต้น - เริ่มต้นออบเจ็กต์
Configuration
ด้วยคู่คีย์-ค่าที่ Google จัดหา คู่คีย์-ค่าแต่ละคู่จะเก็บไว้ในออบเจ็กต์ConfigValue
ภายในออบเจ็กต์Configuration
ใช้อินเทอร์เฟซ Repository
วัตถุประสงค์เพียงอย่างเดียวของออบเจ็กต์ Repository
คือเพื่อดำเนินการข้ามผ่านและการจัดทำดัชนีรายการที่เก็บ เมื่อใช้เทมเพลต คุณต้องลบล้างเมธอดภายในอินเทอร์เฟซ Repository
เท่านั้นเพื่อสร้างเครื่องมือเชื่อมต่อเนื้อหา วิธีการที่คุณลบล้างจะขึ้นอยู่กับเทมเพลตและกลยุทธ์การข้ามผ่านที่คุณใช้ สำหรับ ListingConnector
คุณจะลบล้างเมธอดต่อไปนี้
เมธอด
init()
หากต้องการดำเนินการตั้งค่าและเริ่มต้นพื้นที่เก็บข้อมูล ให้ลบล้างเมธอดinit()
เมธอด
getIds()
หากต้องการเรียกข้อมูลรหัสและค่าแฮชสำหรับระเบียนทั้งหมดในที่เก็บ ให้ลบล้างเมธอดgetIds()
เมธอด
getDoc()
หากต้องการเพิ่มรายการใหม่ อัปเดต แก้ไข หรือลบรายการออกจากดัชนี ให้ลบล้างเมธอดgetDoc()
(ไม่บังคับ) เมธอด
getChanges()
หากที่เก็บรองรับการตรวจหาการเปลี่ยนแปลง ให้ลบล้างเมธอดgetChanges()
ระบบจะเรียกวิธีนี้เพียงครั้งเดียวสำหรับการข้ามผ่านส่วนเพิ่มตามกำหนดการแต่ละรายการ (ตามที่กำหนดโดยการกำหนดค่า) เพื่อเรียกข้อมูลรายการที่แก้ไขและจัดทำดัชนี(ไม่บังคับ) เมธอด
close()
หากต้องการล้างข้อมูลที่เก็บ ให้ลบล้างเมธอดclose()
ระบบจะเรียกวิธีนี้เพียงครั้งเดียวระหว่างการปิดเครื่องเชื่อมต่อ
เมธอดของออบเจ็กต์ Repository
แต่ละรายการจะแสดงออบเจ็กต์ ApiOperation
บางประเภท ออบเจ็กต์ ApiOperation
จะดำเนินการในรูปแบบของการเรียก IndexingService.indexItem()
รายการเดียวหรือหลายรายการให้จัดทำดัชนีที่เก็บจริง
รับพารามิเตอร์การกำหนดค่าที่กำหนดเอง
คุณจะต้องรับพารามิเตอร์ที่กำหนดเองจากออบเจ็กต์ Configuration
เพื่อให้สอดคล้องกับการกำหนดค่าของเครื่องมือเชื่อมต่อ โดยปกติงานนี้จะทำในเมธอด init()
ของชั้นเรียน Repository
คลาส Configuration
มีหลายวิธีในการรับข้อมูลประเภทต่างๆ จากการกำหนดค่า แต่ละวิธีจะแสดงผลออบเจ็กต์ ConfigValue
จากนั้นจะใช้เมธอด get()
ของออบเจ็กต์ ConfigValue
เพื่อดึงค่าจริง
ข้อมูลโค้ดจาก FullTraversalSample
ต่อไปนี้แสดงวิธีดึงค่าจำนวนเต็มที่กำหนดเองค่าเดียวจากออบเจ็กต์ Configuration
หากต้องการรับและแยกวิเคราะห์พารามิเตอร์ที่มีหลายค่า ให้ใช้โปรแกรมแยกวิเคราะห์ประเภท Configuration
ประเภทใดประเภทหนึ่งเพื่อแยกวิเคราะห์ข้อมูลเป็นกลุ่มที่ไม่ต่อเนื่อง
ข้อมูลโค้ดจากเครื่องมือเชื่อมต่อบทแนะนำจะใช้เมธอด getMultiValue
เพื่อรับชื่อที่เก็บ GitHub แบบรายการ
ทำการส่งผ่านกราฟ
ลบล้างเมธอด getIds()
เพื่อเรียกข้อมูลรหัสและค่าแฮชสำหรับระเบียนทั้งหมดในที่เก็บ
เมธอด getIds()
ยอมรับจุดเช็คพอยท์ ระบบจะใช้จุดตรวจสอบเพื่อกลับไปจัดทำดัชนีที่รายการที่เจาะจงต่อหากกระบวนการหยุดชะงัก
จากนั้น ลบล้างเมธอด getDoc()
เพื่อจัดการแต่ละรายการในคิวการจัดทำดัชนีของ Cloud Search
รหัสสินค้าพุชและค่าแฮช
ลบล้าง getIds()
เพื่อดึงข้อมูลรหัสสินค้าและค่าแฮชเนื้อหาที่เชื่อมโยงจากที่เก็บ จากนั้นระบบจะรวมคู่รหัสและค่าแฮชไว้ในคำขอการดำเนินการพุชไปยังคิวการจัดทำดัชนีของ Cloud Search โดยทั่วไปแล้ว ระบบจะพุชรหัสรูทหรือรหัสหลักก่อน ตามด้วยรหัสย่อยจนกว่าจะประมวลผลรายการทั้งลำดับชั้นแล้ว
เมธอด getIds()
จะยอมรับจุดเช็คพอยท์ที่แสดงรายการสุดท้ายที่จะจัดทำดัชนี คุณจะใช้จุดตรวจสอบเพื่อดำเนินการจัดทำดัชนีต่อที่รายการเฉพาะได้ หากกระบวนการหยุดชะงัก สำหรับแต่ละรายการในที่เก็บ ให้ทำตามขั้นตอนต่อไปนี้ในเมธอด getIds()
- รับรหัสรายการแต่ละรายการและค่าแฮชที่เกี่ยวข้องจากที่เก็บ
- จัดคู่รหัสและค่าแฮชแต่ละรายการเป็น
PushItems
- รวม
PushItems
แต่ละรายการเป็นตัวทำซ้ำ ซึ่งแสดงผลโดยเมธอดgetIds()
โปรดทราบว่าจริงๆ แล้วgetIds()
จะแสดงผลCheckpointCloseableIterable
ซึ่งเป็นการทำซ้ำออบเจ็กต์ApiOperation
โดยแต่ละออบเจ็กต์จะแสดงคำขอ API ที่ดำเนินการในRepositoryDoc
เช่น พุชรายการไปยังคิว
ข้อมูลโค้ดต่อไปนี้แสดงวิธีรับรหัสสินค้าและค่าแฮชแต่ละรายการ แล้วแทรกลงใน PushItems
PushItems
เป็นคำขอ ApiOperation
เพื่อพุชรายการไปยังคิวการจัดทำดัชนีของ Cloud Search
ข้อมูลโค้ดต่อไปนี้แสดงวิธีใช้คลาส PushItems.Builder
เพื่อรวมรหัสและค่าแฮชไว้ในพุช ApiOperation
เพียงครั้งเดียว
ระบบจะพุชรายการไปยังคิวการจัดทำดัชนีของ Cloud Search เพื่อประมวลผลต่อไป
ดึงข้อมูลและจัดการแต่ละรายการ
ลบล้าง getDoc()
เพื่อจัดการแต่ละรายการในคิวการจัดทำดัชนีของ Cloud Search
รายการอาจเป็นรายการใหม่ แก้ไข ไม่เปลี่ยนแปลง หรือไม่มีอยู่ในที่เก็บต้นทางอีกต่อไป ดึงข้อมูลและจัดทำดัชนีแต่ละรายการที่เป็นรายการใหม่หรือที่มีการแก้ไข นำรายการออกจากดัชนีที่ไม่มีอยู่ในที่เก็บต้นทางแล้ว
เมธอด getDoc()
จะยอมรับรายการจากคิวการจัดทำดัชนีของ Cloud Search สำหรับแต่ละรายการในคิว ให้ทำตามขั้นตอนต่อไปนี้ในเมธอด getDoc()
ตรวจสอบว่ามีรหัสของรายการนั้นในคิวการจัดทำดัชนีของ Cloud Search ในที่เก็บหรือไม่ หากไม่ ให้ลบรายการออกจากดัชนี หากมีรายการดังกล่าวอยู่ ให้ดำเนินขั้นตอนถัดไป
ดัชนีมีการเปลี่ยนแปลงหรือรายการใหม่:
- ตั้งค่าสิทธิ์
- ตั้งค่าข้อมูลเมตาสำหรับรายการที่คุณกำลังจัดทำดัชนี
- รวมข้อมูลเมตาและรายการลงในไฟล์เดียวที่จัดทำดัชนีได้
RepositoryDoc
- วางรหัสย่อยในคิวการจัดทำดัชนีของ Cloud Search เพื่อประมวลผลเพิ่มเติม
- ส่งคืน
RepositoryDoc
จัดการรายการที่ลบไปแล้ว
ข้อมูลโค้ดต่อไปนี้แสดงวิธีตรวจสอบว่ารายการอยู่ในดัชนีหรือไม่ หรือไม่ให้ลบออก
ตั้งค่าสิทธิ์สำหรับรายการ
ที่เก็บของคุณใช้รายการควบคุมการเข้าถึง (ACL) เพื่อระบุผู้ใช้หรือกลุ่มที่มีสิทธิ์เข้าถึงรายการ ACL คือรายการรหัสของกลุ่มหรือผู้ใช้ที่เข้าถึงรายการดังกล่าวได้
คุณต้องทำสำเนา ACL ที่ที่เก็บของคุณใช้เพื่อให้แน่ใจว่ามีเพียงผู้ใช้ที่มีสิทธิ์เข้าถึงรายการเท่านั้นที่สามารถดูรายการนั้นในผลการค้นหา คุณต้องระบุ ACL ของรายการเมื่อจัดทำดัชนีรายการเพื่อให้ Google Cloud Search มีข้อมูลที่จำเป็นในการให้ระดับการเข้าถึงรายการที่ถูกต้อง
Content Connector SDK มีชุดคลาสและเมธอด ACL ที่หลากหลายเพื่อสร้างโมเดล ACL ของที่เก็บส่วนใหญ่ คุณต้องวิเคราะห์ ACL สำหรับแต่ละรายการในที่เก็บ และสร้าง ACL ที่เกี่ยวข้องสำหรับ Google Cloud Search เมื่อคุณจัดทำดัชนีรายการ หาก ACL ของที่เก็บใช้แนวคิดต่างๆ เช่น การสืบทอด ACL การสร้างโมเดลที่ ACL อาจเป็นเรื่องยาก ดูข้อมูลเพิ่มเติมเกี่ยวกับ ACL ของ Google Cloud Search ได้ที่ ACL ของ Google Cloud Search
หมายเหตุ: Cloud Search Indexing API รองรับ ACL แบบโดเมนเดียว ไม่รองรับ ACL ข้ามโดเมน ใช้คลาส Acl.Builder
เพื่อตั้งค่าการเข้าถึงแต่ละรายการโดยใช้ ACL ข้อมูลโค้ดต่อไปนี้นำมาจากตัวอย่างการส่งผ่านทั้งหมด ทำให้ผู้ใช้หรือ "ผู้ใช้หลัก" ทั้งหมด
(getCustomerPrincipal()
)
เป็น "ผู้อ่าน" ของรายการทั้งหมด
(.setReaders()
)
เมื่อทำการค้นหา
คุณต้องทำความเข้าใจ ACL เพื่อสร้างโมเดล ACL สำหรับที่เก็บอย่างถูกต้อง เช่น คุณอาจกำลังจัดทำดัชนีไฟล์ภายในระบบไฟล์ที่ใช้โมเดลการรับค่าบางประเภทที่โฟลเดอร์ย่อยจะรับค่าสิทธิ์จากโฟลเดอร์หลัก การสร้างแบบจำลองการสืบทอด ACL ต้องมีข้อมูลเพิ่มเติมที่ครอบคลุมใน ACL ของ Google Cloud Search
ตั้งค่าข้อมูลเมตาสำหรับรายการ
ระบบจะจัดเก็บข้อมูลเมตาไว้ในออบเจ็กต์ Item
หากต้องการสร้าง Item
คุณต้องมีรหัสสตริงที่ไม่ซ้ำกัน, ประเภทรายการ, ACL, URL และเวอร์ชันขั้นต่ำของสินค้าดังกล่าว
ข้อมูลโค้ดต่อไปนี้แสดงวิธีสร้าง Item
โดยใช้คลาสตัวช่วยของ
IndexingItemBuilder
สร้างรายการที่จัดทำดัชนีได้
เมื่อคุณตั้งค่าข้อมูลเมตาสำหรับรายการแล้ว คุณสามารถสร้างรายการจริงที่จัดทำดัชนีได้โดยใช้ RepositoryDoc.Builder
ตัวอย่างต่อไปนี้แสดงวิธีสร้างรายการเดี่ยวที่จัดทำดัชนีได้
RepositoryDoc
เป็น ApiOperation
ประเภทหนึ่งที่ดำเนินการตามคำขอ IndexingService.indexItem()
จริง
นอกจากนี้ คุณยังใช้เมธอด setRequestMode()
ของคลาส RepositoryDoc.Builder
เพื่อระบุคำขอการจัดทำดัชนีเป็น ASYNCHRONOUS
หรือ SYNCHRONOUS
ได้ด้วย โดยทำดังนี้
ASYNCHRONOUS
- โหมดอะซิงโครนัสทำให้เกิดความล่าช้าในการจัดทำดัชนีเพื่อแสดงและรองรับโควต้าอัตราการส่งข้อมูลจำนวนมากสำหรับคำขอจัดทำดัชนี เราขอแนะนำโหมดอะซิงโครนัสสำหรับการจัดทำดัชนีเริ่มต้น (โฆษณาทดแทน) ของที่เก็บทั้งหมด
SYNCHRONOUS
- โหมดซิงโครนัสทำให้เวลาในการตอบสนองสำหรับการจัดทำดัชนีเพื่อแสดงโฆษณาสั้นลง และรองรับโควต้าอัตราการส่งข้อมูลที่จำกัด เราขอแนะนำโหมดซิงโครนัสสำหรับการจัดทำดัชนีการอัปเดตและการเปลี่ยนแปลงที่เก็บ หากไม่ระบุ โหมดคำขอจะมีค่าเริ่มต้นเป็น
SYNCHRONOUS
วางรหัสย่อยในคิวการจัดทำดัชนีของ Cloud Search
ข้อมูลโค้ดต่อไปนี้แสดงวิธีรวมรหัสย่อยไว้ในคิวสำหรับการประมวลผล สำหรับรายการหลักที่กำลังประมวลผลอยู่ รหัสเหล่านี้จะได้รับการประมวลผลหลังจากจัดทำดัชนีรายการระดับบนสุดแล้ว
ขั้นตอนถัดไป
ขั้นตอนถัดไปที่ทำได้มีดังนี้
- (ไม่บังคับ) ใช้วิธีการ
close()
เพื่อปล่อยทรัพยากรก่อนที่จะปิดเครื่อง - (ไม่บังคับ) สร้างเครื่องมือเชื่อมต่อข้อมูลประจำตัวโดยใช้ SDK ของ Identity Connector
สร้างเครื่องมือเชื่อมต่อเนื้อหาโดยใช้ REST API
ส่วนต่อไปนี้จะอธิบายวิธีสร้างเครื่องมือเชื่อมต่อเนื้อหาโดยใช้ REST API
กำหนดกลยุทธ์การข้ามผ่าน
ฟังก์ชันหลักของเครื่องมือเชื่อมต่อเนื้อหาคือข้ามผ่านที่เก็บและจัดทำดัชนีข้อมูล คุณต้องใช้กลยุทธ์การข้ามผ่านตามขนาดและการจัดวางข้อมูลในที่เก็บ กลยุทธ์การส่งผ่าน ที่ใช้กันมากที่สุด 3 แบบมีดังนี้
- กลยุทธ์การข้ามผ่านเต็มรูปแบบ
กลยุทธ์การข้ามผ่านแบบเต็มรูปแบบจะสแกนที่เก็บทั้งหมดและจัดทำดัชนีรายการทั้งหมด กลยุทธ์นี้มักใช้เมื่อคุณมีที่เก็บขนาดเล็กและมีค่าใช้จ่ายในการดำเนินการข้ามผ่านทั้งหมดทุกครั้งที่จัดทำดัชนี
กลยุทธ์การข้ามผ่านนี้เหมาะสำหรับที่เก็บขนาดเล็กที่มีข้อมูลส่วนใหญ่คงที่และไม่มีลำดับชั้น คุณอาจใช้กลยุทธ์การข้ามผ่านนี้เมื่อการตรวจจับการเปลี่ยนแปลงทำได้ยากหรือที่ที่เก็บไม่รองรับ
- กลยุทธ์การส่งผ่านรายการ
กลยุทธ์การข้ามผ่านรายการจะสแกนที่เก็บทั้งหมด รวมถึงโหนดย่อยทั้งหมด เพื่อกำหนดสถานะของแต่ละรายการ จากนั้นเครื่องมือเชื่อมต่อจะทำการข้ามครั้งที่ 2 และจัดทำดัชนีเฉพาะรายการใหม่หรือที่มีการอัปเดตหลังจากการจัดทำดัชนีครั้งล่าสุด กลยุทธ์นี้มักใช้ในการอัปเดตดัชนีที่มีอยู่ทีละน้อย (แทนที่จะต้องทำการข้ามผ่านแบบสมบูรณ์ทุกครั้งที่คุณอัปเดตดัชนี)
กลยุทธ์การข้ามผ่านนี้เหมาะกับกรณีที่ที่เก็บการเปลี่ยนแปลงทำได้ยากหรือไม่รองรับ คุณมีข้อมูลที่ไม่ใช่ลำดับชั้น และใช้กับชุดข้อมูลขนาดใหญ่มาก
- การส่งผ่านกราฟ
กลยุทธ์การข้ามผ่านกราฟจะสแกนโหนดระดับบนสุดทั้งโหนดเพื่อกำหนดสถานะของแต่ละรายการ จากนั้นเครื่องมือเชื่อมต่อจะรับการส่งครั้งที่ 2 และจัดทำดัชนีเฉพาะรายการในโหนดรากซึ่งเป็นรายการใหม่หรือได้รับการอัปเดตตั้งแต่การจัดทำดัชนีครั้งล่าสุด สุดท้าย เครื่องมือเชื่อมต่อจะส่งรหัสย่อยแล้วจัดทำดัชนีรายการในโหนดย่อยที่เป็นรายการใหม่หรือได้รับการอัปเดต เครื่องมือเชื่อมต่อจะเรียนรู้ไปเรื่อยๆ ผ่านโหนดย่อยทั้งหมดจนกว่าจะจัดการได้ครบทั้งหมดแล้ว โดยทั่วไปแล้วการข้ามผ่านดังกล่าวจะใช้สำหรับที่เก็บแบบลำดับชั้นซึ่งการแสดงรหัสทั้งหมดไม่ได้ใช้งานได้จริง
กลยุทธ์นี้เหมาะสำหรับหากคุณมีข้อมูลตามลำดับชั้นที่ต้องมีการรวบรวมข้อมูล เช่น ไดเรกทอรีซีรีส์หรือหน้าเว็บ
ใช้กลยุทธ์การส่งผ่านและรายการดัชนี
องค์ประกอบทั้งหมดที่จัดทำดัชนีได้สำหรับ Cloud Search จะเรียกว่ารายการใน Cloud Search API รายการอาจเป็นไฟล์ โฟลเดอร์ บรรทัดในไฟล์ CSV หรือระเบียนฐานข้อมูล
เมื่อลงทะเบียนสคีมาแล้ว คุณจะป้อนข้อมูลดัชนีได้โดยทำดังนี้
(ไม่บังคับ) การใช้
items.upload
เพื่ออัปโหลดไฟล์ที่มีขนาดใหญ่กว่า 100KiB สำหรับการจัดทำดัชนี สำหรับไฟล์ขนาดเล็ก ให้ฝังเนื้อหาเป็น inlineContent โดยใช้items.index
(ไม่บังคับ) การใช้
media.upload
เพื่ออัปโหลดไฟล์สื่อสำหรับการจัดทำดัชนีกำลังใช้
items.index
เพื่อจัดทำดัชนีรายการ เช่น หากสคีมาใช้คำจำกัดความของออบเจ็กต์ในสคีมาภาพยนตร์ คำขอจัดทำดัชนีสำหรับรายการเดียวจะมีลักษณะดังนี้{ "name": "datasource/<data_source_id>/items/titanic", "acl": { "readers": [ { "gsuitePrincipal": { "gsuiteDomain": true } } ] }, "metadata": { "title": "Titanic", "viewUrl": "http://www.imdb.com/title/tt2234155/?ref_=nv_sr_1", "objectType": "movie" }, "structuredData": { "object": { "properties": [ { "name": "movieTitle", "textValues": { "values": [ "Titanic" ] } }, { "name": "releaseDate", "dateValues": { "values": [ { "year": 1997, "month": 12, "day": 19 } ] } }, { "name": "actorName", "textValues": { "values": [ "Leonardo DiCaprio", "Kate Winslet", "Billy Zane" ] } }, { "name": "genre", "enumValues": { "values": [ "Drama", "Action" ] } }, { "name": "userRating", "integerValues": { "values": [ 8 ] } }, { "name": "mpaaRating", "textValues": { "values": [ "PG-13" ] } }, { "name": "duration", "textValues": { "values": [ "3 h 14 min" ] } } ] } }, "content": { "inlineContent": "A seventeen-year-old aristocrat falls in love with a kind but poor artist aboard the luxurious, ill-fated R.M.S. Titanic.", "contentFormat": "TEXT" }, "version": "01", "itemType": "CONTENT_ITEM" }
(ไม่บังคับ) การใช้การเรียก items.get เพื่อยืนยันว่าสินค้าได้รับการจัดทำดัชนีแล้ว
ในการดำเนินการข้ามผ่านโดยสมบูรณ์ คุณจะต้องจัดทำดัชนีที่เก็บทั้งหมดใหม่เป็นระยะๆ หากต้องการดำเนินการข้ามผ่านรายการหรือกราฟ คุณต้องติดตั้งโค้ดเพื่อจัดการการเปลี่ยนแปลงที่เก็บ
จัดการการเปลี่ยนแปลงที่เก็บ
คุณจะรวบรวมและจัดทำดัชนีแต่ละรายการจากที่เก็บเป็นระยะๆ เพื่อจัดทำดัชนีอย่างเต็มรูปแบบ แม้ว่าจะมีประสิทธิภาพในการทำให้ดัชนีของคุณเป็นเวอร์ชันล่าสุด แต่การจัดทำดัชนีแบบเต็มอาจมีค่าใช้จ่ายสูงเมื่อต้องจัดการกับที่เก็บขนาดใหญ่หรือมีลำดับชั้น
คุณยังใช้คิวการจัดทำดัชนีของ Google Cloud เป็นกลไกในการติดตามการเปลี่ยนแปลงและจัดทำดัชนีเฉพาะรายการที่มีการเปลี่ยนแปลงได้อีกด้วย แทนที่จะใช้การเรียกดัชนีเพื่อจัดทำดัชนีที่เก็บทั้งหมดบ่อยๆ คุณสามารถใช้คำขอ items.push เพื่อพุชรายการลงในคิวสำหรับการสำรวจและการอัปเดตในภายหลัง ดูข้อมูลเพิ่มเติมเกี่ยวกับคิวการจัดทำดัชนีของ Google Cloud ได้ที่คิวการจัดทำดัชนีของ Google Cloud
ดูข้อมูลเพิ่มเติมเกี่ยวกับ Google Cloud Search API ได้ที่ Cloud Search API