เครื่องมือเชื่อมต่อเนื้อหาคือโปรแกรมซอฟต์แวร์ที่ใช้เพื่อเรียกดูข้อมูลในที่เก็บขององค์กรและป้อนข้อมูลแหล่งข้อมูล 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
ตัวเชื่อมต่อเนื้อหาทั่วไปจะทํางานต่อไปนี้
- อ่านและประมวลผลพารามิเตอร์การกําหนดค่า
- ดึงข้อมูลแบบแยกส่วนที่จัดทําดัชนีได้ ซึ่งเรียกว่า "รายการ" จากที่เก็บเนื้อหาของบุคคลที่สาม
- รวม ACL, ข้อมูลเมตา และข้อมูลเนื้อหาไว้ในรายการที่จัดทําดัชนีได้
- จัดทําดัชนีรายการในแหล่งข้อมูล Cloud Search
- (ไม่บังคับ) ฟังการแจ้งเตือนการเปลี่ยนแปลงจากที่เก็บเนื้อหาของบุคคลที่สาม ระบบจะแปลงการแจ้งเตือนการเปลี่ยนแปลงเป็นคำขอจัดทำดัชนีเพื่อให้แหล่งข้อมูล Cloud Search ซิงค์กับที่เก็บของบุคคลที่สามอยู่เสมอ ตัวเชื่อมต่อจะทํางานนี้เฉพาะในกรณีที่ที่เก็บข้อมูลรองรับการตรวจหาการเปลี่ยนแปลง
สร้างเครื่องมือเชื่อมต่อเนื้อหาโดยใช้ Content Connector SDK
ส่วนต่อไปนี้จะอธิบายวิธีสร้างเครื่องมือเชื่อมต่อเนื้อหาโดยใช้ Content Connector SDK
ตั้งค่าทรัพยากร Dependency
คุณต้องใส่ Dependency บางรายการในไฟล์บิลด์เพื่อใช้ SDK คลิกแท็บด้านล่างเพื่อดูรายการที่ต้องใช้สำหรับสภาพแวดล้อมการสร้าง
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 และจัดทําดัชนีเฉพาะรายการในโหนดรูทที่เป็นรายการใหม่หรือได้รับการอัปเดตนับตั้งแต่การจัดทําดัชนีครั้งล่าสุด สุดท้าย ตัวเชื่อมต่อจะส่งรหัสย่อยแล้วจัดทำดัชนีรายการในโหนดย่อยซึ่งเป็นรายการใหม่หรืออัปเดตแล้ว ตัวเชื่อมต่อจะดำเนินการซ้ำๆ ผ่านโหนดย่อยทั้งหมดจนกว่าระบบจะจัดการกับรายการทั้งหมดแล้ว โดยปกติแล้ว การสํารวจดังกล่าวจะใช้กับที่เก็บข้อมูลแบบลําดับชั้นที่การระบุรหัสทั้งหมดไม่เหมาะ
กลยุทธ์นี้เหมาะสำหรับในกรณีที่คุณมีข้อมูลที่จัดลำดับชั้นซึ่งต้องมีการ Crawl เช่น ชุดไดเรกทอรีหรือหน้าเว็บ
กลยุทธ์การเรียกดูแต่ละรายการเหล่านี้จะใช้โดยคลาสเครื่องมือเชื่อมต่อเทมเพลตใน 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()
ระบบจะเรียกใช้เมธอดนี้ 1 ครั้งสําหรับการเรียกดูตามกำหนดการแต่ละครั้ง (ตามที่กําหนดโดยการกำหนดค่า)(ไม่บังคับ)
getChanges()
วิธีการ หากที่เก็บข้อมูลรองรับการตรวจหาการเปลี่ยนแปลง ให้ลบล้างเมธอดgetChanges()
ระบบจะเรียกใช้เมธอดนี้ 1 ครั้งสําหรับการเรียกดูแบบเพิ่มทีละน้อยตามกำหนดการแต่ละรายการ (ตามที่กําหนดโดยการกำหนดค่า) เพื่อดึงข้อมูลรายการที่แก้ไขและจัดทำดัชนี(ไม่บังคับ)
close()
วิธีการ หากต้องการล้างข้อมูลในที่เก็บ ให้ลบล้างclose()
วิธีนี้ ระบบจะเรียกใช้เมธอดนี้ 1 ครั้งระหว่างการปิดเครื่องมือเชื่อมต่อ
เมธอดแต่ละรายการของออบเจ็กต์ Repository
จะแสดงผลออบเจ็กต์ ApiOperation
ประเภทใดประเภทหนึ่ง ออบเจ็กต์ ApiOperation
จะดําเนินการในรูปแบบการเรียกใช้ IndexingService.indexItem()
ครั้งเดียวหรือหลายครั้งเพื่อดําเนินการจัดทำดัชนีที่แท้จริงของที่เก็บ
รับพารามิเตอร์การกําหนดค่าที่กําหนดเอง
ในการจัดการการกําหนดค่าของเครื่องมือเชื่อมต่อ คุณจะต้องรับพารามิเตอร์ที่กําหนดเองจากออบเจ็กต์ Configuration
โดยปกติแล้ว การดำเนินการนี้จะอยู่ในเมธอดของ
Repository
คลาส
init()
คลาส Configuration
มีเมธอดหลายวิธีในการรับข้อมูลประเภทต่างๆ จากการกำหนดค่า โดยแต่ละเมธอดจะแสดงผลออบเจ็กต์ ConfigValue
จากนั้นจะใช้เมธอด get()
ของออบเจ็กต์ ConfigValue
เพื่อดึงค่าจริง
ข้อมูลโค้ดต่อไปนี้จาก FullTraversalSample
จะแสดงวิธีดึงค่าจำนวนเต็มที่กำหนดเองค่าเดียวจากออบเจ็กต์ Configuration
หากต้องการรับและแยกวิเคราะห์พารามิเตอร์ที่มีหลายค่า ให้ใช้โปรแกรมแยกวิเคราะห์ประเภทของคลาส Configuration
รายการใดรายการหนึ่งเพื่อแยกวิเคราะห์ข้อมูลออกเป็นกลุ่มๆ
ข้อมูลโค้ดต่อไปนี้จากเครื่องมือเชื่อมต่อบทแนะนำใช้เมธอด getMultiValue
เพื่อรับรายการชื่อที่เก็บ GitHub
ทำการเรียกใช้แบบเต็ม
ลบล้าง
getAllDocs()
เพื่อเรียกใช้การเรียกดูทั้งหมดและจัดทำดัชนีที่เก็บ เมธอด getAllDocs()
ยอมรับจุดตรวจสอบ ระบบจะใช้จุดตรวจสอบเพื่อจัดทําดัชนีต่อที่รายการที่เฉพาะเจาะจงในกรณีที่กระบวนการถูกขัดจังหวะ สําหรับรายการแต่ละรายการในที่เก็บ ให้ทําตามขั้นตอนต่อไปนี้ในgetAllDocs()
เมธอด
- ตั้งค่าสิทธิ์
- ตั้งค่าข้อมูลเมตาของรายการที่คุณกําลังจัดทําดัชนี
- รวมข้อมูลเมตาและรายการเข้าด้วยกันเป็น
RepositoryDoc
ที่จัดทำดัชนีได้รายการเดียว - แพ็กเกจรายการที่จัดทำดัชนีได้แต่ละรายการไว้ในตัวดำเนินการที่
getAllDocs()
method แสดงผล โปรดทราบว่า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 ใช้เก็บรหัสและค่าแฮชที่ไม่บังคับสําหรับแต่ละรายการในที่เก็บ เครื่องมือเชื่อมต่อการเรียกดูรายการจะส่ง ID รายการไปยังคิวการจัดทําดัชนีของ 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()
ระบบจะเรียกใช้เมธอดนี้ 1 ครั้งสําหรับการเรียกดูแบบเพิ่มทีละน้อยตามกำหนดการแต่ละครั้ง (ตามที่กําหนดโดยการกำหนดค่า) เพื่อดึงข้อมูลรายการที่แก้ไขและจัดทำดัชนี(ไม่บังคับ)
close()
วิธีการ หากต้องการล้างข้อมูลในที่เก็บ ให้ลบล้างclose()
วิธีนี้ ระบบจะเรียกใช้เมธอดนี้ 1 ครั้งระหว่างการปิดเครื่องมือเชื่อมต่อ
เมธอดแต่ละรายการของออบเจ็กต์ Repository
จะแสดงผลออบเจ็กต์ ApiOperation
ประเภทใดประเภทหนึ่ง ออบเจ็กต์ ApiOperation
จะดําเนินการในรูปแบบการเรียกใช้ IndexingService.indexItem()
ครั้งเดียวหรือหลายครั้งเพื่อดําเนินการจัดทำดัชนีที่แท้จริงของที่เก็บ
รับพารามิเตอร์การกําหนดค่าที่กําหนดเอง
ในการจัดการการกําหนดค่าของเครื่องมือเชื่อมต่อ คุณจะต้องรับพารามิเตอร์ที่กําหนดเองจากออบเจ็กต์ Configuration
โดยปกติแล้ว การดำเนินการนี้จะอยู่ในเมธอดของ
Repository
คลาส
init()
คลาส Configuration
มีเมธอดหลายวิธีในการรับข้อมูลประเภทต่างๆ จากการกำหนดค่า โดยแต่ละเมธอดจะแสดงผลออบเจ็กต์ ConfigValue
จากนั้นจะใช้เมธอด get()
ของออบเจ็กต์ ConfigValue
เพื่อดึงค่าจริง
ข้อมูลโค้ดต่อไปนี้จาก FullTraversalSample
จะแสดงวิธีดึงค่าจำนวนเต็มที่กำหนดเองค่าเดียวจากออบเจ็กต์ Configuration
หากต้องการรับและแยกวิเคราะห์พารามิเตอร์ที่มีหลายค่า ให้ใช้โปรแกรมแยกวิเคราะห์ประเภทของคลาส Configuration
รายการใดรายการหนึ่งเพื่อแยกวิเคราะห์ข้อมูลออกเป็นกลุ่มๆ
ข้อมูลโค้ดต่อไปนี้จากเครื่องมือเชื่อมต่อบทแนะนำใช้เมธอด getMultiValue
เพื่อรับรายการชื่อที่เก็บ GitHub
ดำเนินการวนรายการ
ลบล้างวิธี
getIds()
เพื่อดึงข้อมูลรหัสและค่าแฮชของระเบียนทั้งหมดในที่เก็บ
เมธอด getIds()
ยอมรับจุดตรวจสอบ ระบบจะใช้จุดตรวจสอบเพื่อจัดทําดัชนีต่อที่รายการที่เฉพาะเจาะจงในกรณีที่กระบวนการถูกขัดจังหวะ
จากนั้นลบล้างวิธี getDoc()
เพื่อจัดการแต่ละรายการในคิวการจัดทําดัชนีของ Cloud Search
พุชรหัสสินค้าและค่าแฮช
ลบล้าง
getIds()
เพื่อดึงข้อมูลรหัสรายการและค่าแฮชเนื้อหาที่เกี่ยวข้องจากที่เก็บ จากนั้นระบบจะรวมคู่รหัสและค่าแฮชเป็นคําขอการดำเนินการ Push ไปยังคิวการจัดทําดัชนีของ Cloud Search โดยปกติระบบจะพุชรหัสรูทหรือรหัสหลักก่อน ตามด้วยรหัสย่อยจนกว่าระบบจะประมวลผลลําดับชั้นของรายการทั้งหมดแล้ว
เมธอด getIds()
จะยอมรับจุดตรวจสอบที่แสดงถึงรายการสุดท้ายที่จะได้รับการจัดทำดัชนี คุณสามารถใช้จุดตรวจสอบเพื่อจัดทําดัชนีต่อที่รายการที่เฉพาะเจาะจงได้หากกระบวนการถูกขัดจังหวะ สำหรับแต่ละรายการในที่เก็บข้อมูล ให้ทำตามขั้นตอนต่อไปนี้ในเมธอด getIds()
- รับรหัสสินค้าแต่ละรายการและค่าแฮชที่เกี่ยวข้องจากที่เก็บ
- แพ็กคู่รหัสและค่าแฮชแต่ละคู่ไว้ใน
PushItems
- รวม
PushItems
แต่ละรายการเข้าด้วยกันในตัวดำเนินการวนซ้ำที่แสดงผลโดยวิธีgetIds()
โปรดทราบว่าgetIds()
จะแสดงผลเป็นCheckpointCloseableIterable
ซึ่งเป็นการวนซ้ำของApiOperation
ออบเจ็กต์ โดยแต่ละออบเจ็กต์แสดงถึงคําขอ API ที่ดำเนินการในRepositoryDoc
เช่น พุชรายการไปยังคิว
ข้อมูลโค้ดต่อไปนี้แสดงวิธีรับรหัสรายการและค่าแฮชแต่ละรายการ แล้วแทรกลงใน PushItems
PushItems
คือคำขอ ApiOperation
เพื่อส่งรายการไปยังคิวการจัดทําดัชนีของ Cloud Search
ข้อมูลโค้ดต่อไปนี้แสดงวิธีใช้คลาส PushItems.Builder
เพื่อจัดแพ็กเกจรหัสและค่าแฮชไว้ใน Push เดียว 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()
ระบบจะเรียกใช้เมธอดนี้ 1 ครั้งสําหรับการเรียกดูแบบเพิ่มทีละน้อยตามกำหนดการแต่ละครั้ง (ตามที่กําหนดโดยการกำหนดค่า) เพื่อดึงข้อมูลรายการที่แก้ไขและจัดทำดัชนี(ไม่บังคับ)
close()
วิธีการ หากต้องการล้างข้อมูลในที่เก็บ ให้ลบล้างclose()
วิธีนี้ ระบบจะเรียกใช้เมธอดนี้ 1 ครั้งระหว่างการปิดเครื่องมือเชื่อมต่อ
เมธอดแต่ละรายการของออบเจ็กต์ Repository
จะแสดงผลออบเจ็กต์ ApiOperation
บางประเภท ApiOperation
ออบเจ็กต์จะดําเนินการในรูปแบบการเรียกใช้IndexingService.indexItem()
ครั้งเดียวหรือหลายครั้งเพื่อดําเนินการจัดทำดัชนีที่แท้จริงของที่เก็บ
รับพารามิเตอร์การกําหนดค่าที่กําหนดเอง
ในการกําหนดค่าของเครื่องมือเชื่อมต่อ คุณจะต้องรับพารามิเตอร์ที่กําหนดเองจากออบเจ็กต์ Configuration
โดยปกติแล้ว การดำเนินการนี้จะอยู่ในเมธอดของ
Repository
คลาส
init()
คลาส Configuration
มีเมธอดหลายวิธีในการรับข้อมูลประเภทต่างๆ จากการกำหนดค่า โดยแต่ละเมธอดจะแสดงผลออบเจ็กต์ ConfigValue
จากนั้นจะใช้เมธอด get()
ของออบเจ็กต์ ConfigValue
เพื่อดึงค่าจริง
ข้อมูลโค้ดต่อไปนี้จาก FullTraversalSample
จะแสดงวิธีดึงค่าจำนวนเต็มที่กำหนดเองค่าเดียวจากออบเจ็กต์ Configuration
หากต้องการรับและแยกวิเคราะห์พารามิเตอร์ที่มีหลายค่า ให้ใช้โปรแกรมแยกวิเคราะห์ประเภทของคลาส Configuration
รายการใดรายการหนึ่งเพื่อแยกวิเคราะห์ข้อมูลออกเป็นกลุ่มๆ
ข้อมูลโค้ดต่อไปนี้จากเครื่องมือเชื่อมต่อบทแนะนำใช้วิธี getMultiValue
เพื่อรับรายการชื่อที่เก็บ GitHub
ดำเนินการผ่านกราฟ
ลบล้างวิธี
getIds()
เพื่อดึงข้อมูลรหัสและค่าแฮชของระเบียนทั้งหมดในที่เก็บ
เมธอด getIds()
ยอมรับจุดตรวจสอบ ระบบจะใช้จุดตรวจสอบเพื่อจัดทําดัชนีต่อที่รายการที่เฉพาะเจาะจงในกรณีที่กระบวนการถูกขัดจังหวะ
จากนั้นลบล้างวิธี getDoc()
เพื่อจัดการแต่ละรายการในคิวการจัดทําดัชนีของ Cloud Search
พุชรหัสสินค้าและค่าแฮช
ลบล้าง
getIds()
เพื่อดึงข้อมูลรหัสรายการและค่าแฮชเนื้อหาที่เกี่ยวข้องจากที่เก็บ จากนั้นระบบจะรวมคู่รหัสและค่าแฮชเป็นคําขอการดำเนินการ Push ไปยังคิวการจัดทําดัชนีของ Cloud Search โดยปกติระบบจะพุชรหัสรูทหรือรหัสหลักก่อน ตามด้วยรหัสย่อยจนกว่าระบบจะประมวลผลลําดับชั้นของรายการทั้งหมดแล้ว
เมธอด getIds()
จะยอมรับจุดตรวจสอบที่แสดงถึงรายการสุดท้ายที่จะได้รับการจัดทำดัชนี คุณสามารถใช้จุดตรวจสอบเพื่อจัดทําดัชนีต่อที่รายการที่เฉพาะเจาะจงได้หากกระบวนการถูกขัดจังหวะ สำหรับแต่ละรายการในที่เก็บข้อมูล ให้ทำตามขั้นตอนต่อไปนี้ในเมธอด getIds()
- รับรหัสสินค้าแต่ละรายการและค่าแฮชที่เกี่ยวข้องจากที่เก็บ
- แพ็กคู่รหัสและค่าแฮชแต่ละคู่ไว้ใน
PushItems
- รวม
PushItems
แต่ละรายการเข้าด้วยกันในตัวดำเนินการวนซ้ำที่แสดงผลโดยเมธอดgetIds()
โปรดทราบว่าgetIds()
จะแสดงผลเป็นCheckpointCloseableIterable
ซึ่งเป็นการวนซ้ำของApiOperation
ออบเจ็กต์ โดยแต่ละออบเจ็กต์แสดงถึงคําขอ API ที่ดำเนินการในRepositoryDoc
เช่น พุชรายการไปยังคิว
ข้อมูลโค้ดต่อไปนี้แสดงวิธีรับรหัสรายการและค่าแฮชแต่ละรายการ แล้วแทรกลงใน PushItems
PushItems
คือคำขอเพื่อส่งรายการไปยังคิวการจัดทําดัชนีของ Cloud Search
ApiOperation
ข้อมูลโค้ดต่อไปนี้แสดงวิธีใช้คลาส PushItems.Builder
เพื่อจัดแพ็กเกจรหัสและค่าแฮชไว้ใน Push เดียว 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()
เพื่อปล่อยทรัพยากรก่อนปิดระบบ - (ไม่บังคับ) สร้างโปรแกรมเชื่อมต่อข้อมูลประจำตัวโดยใช้ Identity Connector SDK
สร้างเครื่องมือเชื่อมต่อเนื้อหาโดยใช้ REST API
ส่วนต่อไปนี้อธิบายวิธีสร้างตัวเชื่อมต่อเนื้อหาโดยใช้ REST API
กำหนดกลยุทธ์การเรียกดู
ฟังก์ชันหลักของคอนเน็กเตอร์เนื้อหาคือการเรียกดูที่เก็บและจัดทำดัชนีข้อมูล คุณต้องใช้กลยุทธ์การเรียกดูตามขนาดและเลย์เอาต์ของข้อมูลในที่เก็บข้อมูล กลยุทธ์การเรียกดูทั่วไป 3 ประการมีดังนี้
- กลยุทธ์การเรียกดูทั้งหมด
กลยุทธ์การเรียกดูทั้งหมดจะสแกนทั้งพื้นที่เก็บข้อมูลและจัดทำดัชนีทุกรายการโดยไม่มีการกรอง กลยุทธ์นี้มักใช้เมื่อคุณมีที่เก็บข้อมูลขนาดเล็กและรับภาระงานเพิ่มเติมจากการเรียกดูทั้งหมดทุกครั้งที่จัดทำดัชนีได้
กลยุทธ์การเรียกใช้นี้เหมาะสำหรับที่เก็บข้อมูลขนาดเล็กที่มีข้อมูลแบบคงที่ซึ่งไม่เป็นลําดับชั้นส่วนใหญ่ นอกจากนี้ คุณยังใช้กลยุทธ์การเรียกดูนี้เมื่อการตรวจหาการเปลี่ยนแปลงทำได้ยากหรือที่เก็บไม่รองรับ
- กลยุทธ์การเรียกดูรายการ
กลยุทธ์การเรียกดูรายการจะสแกนทั้งพื้นที่เก็บข้อมูล รวมถึงโหนดย่อยทั้งหมด เพื่อกำหนดสถานะของแต่ละรายการ จากนั้น ตัวเชื่อมต่อจะทำการเรียกใช้ครั้งที่ 2 และจัดทำดัชนีเฉพาะรายการใหม่หรือรายการที่อัปเดตตั้งแต่การจัดทำดัชนีครั้งล่าสุด กลยุทธ์นี้มักใช้เพื่อทำการอัปเดตแบบเพิ่มลงในดัชนีที่มีอยู่ (แทนที่จะต้องท่องไปยังทุกตำแหน่งทุกครั้งที่อัปเดตดัชนี)
กลยุทธ์การเรียกใช้นี้เหมาะสำหรับกรณีที่การตรวจหาการเปลี่ยนแปลงทำได้ยากหรือที่รีโพซิทอรีไม่รองรับ คุณมีข้อมูลที่ไม่เป็นลําดับชั้น และคุณกําลังทํางานกับชุดข้อมูลขนาดใหญ่มาก
- การเรียกใช้กราฟ
กลยุทธ์การเรียกดูกราฟจะสแกนโหนดหลักทั้งหมดเพื่อระบุสถานะของแต่ละรายการ จากนั้นเครื่องมือเชื่อมต่อจะทํางานรอบที่ 2 และจัดทําดัชนีเฉพาะรายการในโหนดรูทที่เป็นรายการใหม่หรือได้รับการอัปเดตนับตั้งแต่การจัดทําดัชนีครั้งล่าสุด สุดท้าย ตัวเชื่อมต่อจะส่งรหัสย่อยแล้วจัดทำดัชนีรายการในโหนดย่อยซึ่งเป็นรายการใหม่หรืออัปเดตแล้ว ตัวเชื่อมต่อจะดำเนินการซ้ำๆ ผ่านโหนดย่อยทั้งหมดจนกว่าระบบจะจัดการกับรายการทั้งหมดแล้ว โดยปกติแล้ว การสํารวจดังกล่าวจะใช้กับที่เก็บข้อมูลแบบลําดับชั้นที่การระบุรหัสทั้งหมดไม่เหมาะ
กลยุทธ์นี้เหมาะสำหรับในกรณีที่คุณมีข้อมูลที่จัดลำดับชั้นซึ่งต้องมีการ Crawl เช่น ไดเรกทอรีชุดหนังสือหรือหน้าเว็บ
ใช้กลยุทธ์การเรียกใช้และจัดทำดัชนีรายการ
องค์ประกอบที่จัดทำดัชนีได้ทั้งหมดสำหรับ Cloud Search เรียกว่ารายการใน Cloud Search API รายการอาจเป็นไฟล์ โฟลเดอร์ บรรทัดในไฟล์ CSV หรือระเบียนฐานข้อมูล
เมื่อลงทะเบียนสคีมาแล้ว คุณจะป้อนข้อมูลลงในดัชนีได้โดยทำดังนี้
(ไม่บังคับ) ใช้
items.upload
เพื่ออัปโหลดไฟล์ที่มีขนาดใหญ่กว่า 100 KiB สำหรับการจัดทำดัชนี สำหรับไฟล์ขนาดเล็ก ให้ฝังเนื้อหาเป็น inlineContent โดยใช้items.index
(ไม่บังคับ) ใช้
media.upload
เพื่ออัปโหลดไฟล์สื่อสำหรับการจัดทำดัชนีใช้
items.index
เพื่อจัดทำดัชนีรายการ เช่น หากสคีมาใช้คำจำกัดความของออบเจ็กต์ใน movie schema คำขอจัดทําดัชนีสําหรับรายการเดียวจะมีลักษณะดังนี้{ "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