เครื่องมือเชื่อมต่อเนื้อหาคือโปรแกรมซอฟต์แวร์ที่ใช้เพื่อข้ามผ่านข้อมูลในที่เก็บขององค์กรและเติมข้อมูลในแหล่งข้อมูล Google มีตัวเลือกต่อไปนี้สำหรับการพัฒนาเครื่องมือเชื่อมต่อเนื้อหา
SDK เครื่องมือเชื่อมต่อเนื้อหา ซึ่งเป็นตัวเลือกที่ดีหากคุณเขียนโปรแกรมใน Java SDK เครื่องมือเชื่อมต่อเนื้อหาเป็น Wrapper ของ REST API ซึ่งช่วยให้คุณสร้างเครื่องมือเชื่อมต่อได้อย่างรวดเร็ว หากต้องการสร้างเครื่องมือเชื่อมต่อเนื้อหาโดยใช้ SDK โปรดดูสร้างเครื่องมือเชื่อมต่อเนื้อหาโดยใช้ SDK เครื่องมือเชื่อมต่อเนื้อหา
REST API หรือไลบรารี API ระดับต่ำ ใช้ตัวเลือกเหล่านี้หากคุณไม่ได้เขียนโปรแกรมใน Java หรือหากฐานของโค้ดรองรับ API ของ REST หรือไลบรารีมากกว่า หากต้องการสร้างเครื่องมือเชื่อมต่อเนื้อหาโดยใช้ REST API โปรดดูสร้างเครื่องมือเชื่อมต่อเนื้อหาโดยใช้ REST API
เครื่องมือเชื่อมต่อเนื้อหาทั่วไปจะทำงานต่อไปนี้
- อ่านและประมวลผลพารามิเตอร์การกำหนดค่า
- ดึงข้อมูลเป็นกลุ่มที่จัดทำดัชนีได้ที่เรียกว่า "items" จากที่เก็บเนื้อหาของบุคคลที่สาม
- รวม ACL, ข้อมูลเมตา และข้อมูลเนื้อหาเป็นรายการที่สามารถจัดทำดัชนีได้
- จัดทำดัชนีรายการในแหล่งข้อมูล Cloud Search
- (ไม่บังคับ) ฟังเพื่อเปลี่ยนการแจ้งเตือนจากที่เก็บเนื้อหาของบุคคลที่สาม ระบบจะแปลงการแจ้งเตือนการเปลี่ยนแปลงเป็นคำขอจัดทำดัชนีเพื่อให้แหล่งข้อมูล Cloud Search ซิงค์กับที่เก็บของบุคคลที่สามอยู่เสมอ เครื่องมือเชื่อมต่อจะทำงานนี้เมื่อที่เก็บรองรับการตรวจหาการเปลี่ยนแปลงเท่านั้น
สร้างเครื่องมือเชื่อมต่อเนื้อหาโดยใช้ SDK เครื่องมือเชื่อมต่อเนื้อหา
ส่วนต่อไปนี้อธิบายวิธีสร้างเครื่องมือเชื่อมต่อเนื้อหาโดยใช้ SDK เครื่องมือเชื่อมต่อเนื้อหา
ตั้งค่าทรัพยากร 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 และจัดทำดัชนีรายการ ในโหนดรากเท่านั้นเป็นรายการใหม่หรือได้รับการอัปเดตตั้งแต่การจัดทำดัชนีครั้งล่าสุด สุดท้าย เครื่องมือเชื่อมต่อจะส่งผ่านรหัสย่อย จากนั้นจึงจัดทำดัชนีรายการในโหนดย่อยที่เป็นรายการใหม่หรือได้รับการอัปเดตแล้ว เครื่องมือเชื่อมต่อจะดำเนินต่อไปเรื่อยๆ ผ่านโหนดย่อยทั้งหมดจนกว่าจะแก้ไขปัญหาทุกรายการแล้ว โดยทั่วไปแล้ว การข้ามผ่านดังกล่าวมักใช้สำหรับที่เก็บแบบลำดับชั้นโดยที่รายการรหัสทั้งหมดไม่สามารถทำได้จริง
กลยุทธ์นี้เหมาะสำหรับกรณีที่คุณมีข้อมูลแบบลำดับขั้นซึ่งจำเป็นต้องทำการ 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()
เมธอดนี้จะมีการเรียกเพียงครั้งเดียวระหว่างการปิดโปรแกรมเชื่อมต่อ
แต่ละเมธอดของออบเจ็กต์ 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 มีข้อมูลที่จำเป็นในการให้ระดับการเข้าถึงที่ถูกต้องสำหรับรายการ
SDK เครื่องมือเชื่อมต่อเนื้อหามีคลาสและเมธอด ACL มากมายเพื่อสร้างโมเดล ACL ของที่เก็บส่วนใหญ่ คุณต้องวิเคราะห์ ACL สำหรับแต่ละรายการในที่เก็บ และสร้าง ACL ที่สอดคล้องกันสำหรับ Google Cloud Search เมื่อจัดทำดัชนีรายการ หาก ACL ของที่เก็บใช้แนวคิดต่างๆ เช่น การรับช่วงค่า ACL การสร้างแบบจำลองที่ ACL อาจเป็นเรื่องยุ่งยาก ดูข้อมูลเพิ่มเติมเกี่ยวกับ ACL ของ Google Cloud Search ได้ที่ ACL ของ Google Cloud Search
หมายเหตุ: Cloud SearchIndexing 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 จะดำเนินการเรียกใช้การจัดทำดัชนีแต่ละรายการภายในตัววนซ้ำ
ขั้นตอนถัดไป
ขั้นตอนถัดไป 2-3 อย่างที่คุณอาจดำเนินการมีดังนี้
- (ไม่บังคับ) หากอัตราการส่งข้อมูลของการจัดทำดัชนีดูช้า โปรดดูเพิ่มอัตราการจัดทำดัชนีสำหรับ
FullTraversalConnector
- (ไม่บังคับ) ใช้เมธอด
close()
เพื่อปล่อยทรัพยากรก่อนปิดเครื่อง - (ไม่บังคับ) สร้างเครื่องมือเชื่อมต่อข้อมูลประจำตัว โดยใช้ 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()
ระบบจะเรียกใช้เมธอดนี้ 1 ครั้งสำหรับการส่งผ่านเพิ่มที่ตั้งเวลาไว้แต่ละรายการ (ตามที่กำหนดโดยการกำหนดค่า) เพื่อเรียกรายการที่แก้ไขและจัดทำดัชนี(ไม่บังคับ) เมธอด
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 มีข้อมูลที่จำเป็นในการให้ระดับการเข้าถึงที่ถูกต้องสำหรับรายการ
SDK เครื่องมือเชื่อมต่อเนื้อหามีคลาสและเมธอด ACL มากมายเพื่อสร้างโมเดล ACL ของที่เก็บส่วนใหญ่ คุณต้องวิเคราะห์ ACL สำหรับแต่ละรายการในที่เก็บ และสร้าง ACL ที่สอดคล้องกันสำหรับ Google Cloud Search เมื่อจัดทำดัชนีรายการ หาก ACL ของที่เก็บใช้แนวคิดต่างๆ เช่น การรับช่วงค่า ACL การสร้างแบบจำลองที่ ACL อาจเป็นเรื่องยุ่งยาก ดูข้อมูลเพิ่มเติมเกี่ยวกับ ACL ของ Google Cloud Search ได้ที่ ACL ของ Google Cloud Search
หมายเหตุ: Cloud SearchIndexing 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
ขั้นตอนถัดไป
ขั้นตอนถัดไป 2-3 อย่างที่คุณอาจดำเนินการมีดังนี้
- (ไม่บังคับ) ใช้เมธอด
close()
เพื่อปล่อยทรัพยากรก่อนปิดเครื่อง - (ไม่บังคับ) สร้างเครื่องมือเชื่อมต่อข้อมูลประจำตัว โดยใช้ 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()
เมธอดนี้จะมีการเรียกเพียงครั้งเดียวระหว่างการปิดโปรแกรมเชื่อมต่อ
แต่ละเมธอดของออบเจ็กต์ 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 มีข้อมูลที่จำเป็นในการให้ระดับการเข้าถึงที่ถูกต้องสำหรับรายการ
SDK เครื่องมือเชื่อมต่อเนื้อหามีคลาสและเมธอด ACL มากมายเพื่อสร้างโมเดล ACL ของที่เก็บส่วนใหญ่ คุณต้องวิเคราะห์ ACL สำหรับแต่ละรายการในที่เก็บ และสร้าง ACL ที่สอดคล้องกันสำหรับ Google Cloud Search เมื่อจัดทำดัชนีรายการ หาก ACL ของที่เก็บใช้แนวคิดต่างๆ เช่น การรับช่วงค่า ACL การสร้างแบบจำลองที่ ACL อาจเป็นเรื่องยุ่งยาก ดูข้อมูลเพิ่มเติมเกี่ยวกับ ACL ของ Google Cloud Search ได้ที่ ACL ของ Google Cloud Search
หมายเหตุ: Cloud SearchIndexing 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
ข้อมูลโค้ดต่อไปนี้แสดงวิธีรวมรหัสย่อยสำหรับรายการหลักที่ประมวลผลอยู่ในปัจจุบันลงในคิวสำหรับการประมวลผล รหัสเหล่านี้จะได้รับการประมวลผลหลังจากจัดทำดัชนีรายการหลักแล้ว
ขั้นตอนถัดไป
ขั้นตอนถัดไป 2-3 อย่างที่คุณอาจดำเนินการมีดังนี้
- (ไม่บังคับ) ใช้เมธอด
close()
เพื่อปล่อยทรัพยากรก่อนปิดเครื่อง - (ไม่บังคับ) สร้างเครื่องมือเชื่อมต่อข้อมูลประจำตัวโดยใช้ Identity Connector SDK
สร้างเครื่องมือเชื่อมต่อเนื้อหาโดยใช้ REST API
ส่วนต่อไปนี้อธิบายวิธีสร้างเครื่องมือเชื่อมต่อเนื้อหาโดยใช้ REST API
กำหนดกลยุทธ์การส่งผ่าน
ฟังก์ชันหลักของเครื่องมือเชื่อมต่อเนื้อหาคือข้ามผ่านที่เก็บและจัดทำดัชนีข้อมูล คุณต้องใช้กลยุทธ์การส่งผ่านโดยอิงตามขนาดและเลย์เอาต์ของข้อมูลในที่เก็บ ต่อไปนี้เป็นกลยุทธ์ทั่วไป ในการท่องผ่านทั่วไป 3 วิธี
- กลยุทธ์การส่งผ่านเต็มรูปแบบ
กลยุทธ์การส่งผ่านเต็มรูปแบบจะสแกนที่เก็บทั้งหมดและจัดทำดัชนีรายการทั้งหมดแบบสุ่ม กลยุทธ์นี้มักจะใช้เมื่อคุณมีที่เก็บขนาดเล็กและมีค่าใช้จ่ายในการดำเนินการข้ามผ่านเต็มรูปแบบทุกครั้งที่คุณจัดทำดัชนี
กลยุทธ์การส่งผ่านนี้เหมาะสำหรับที่เก็บขนาดเล็กที่มีข้อมูลส่วนใหญ่เป็นแบบคงที่และไม่มีลำดับชั้น คุณยังอาจใช้กลยุทธ์การข้ามผ่านนี้เมื่อการตรวจหาการเปลี่ยนแปลงทำได้ยากหรือไม่รองรับโดยที่เก็บ
- กลยุทธ์การส่งผ่านรายการ
กลยุทธ์การส่งผ่านรายการจะสแกนที่เก็บทั้งหมด รวมถึงโหนดย่อยทั้งหมด เพื่อกำหนดสถานะของแต่ละรายการ จากนั้นเครื่องมือเชื่อมต่อจะผ่านครั้งที่ 2 และจัดทำดัชนีเฉพาะรายการใหม่หรือได้รับการอัปเดตนับตั้งแต่การจัดทำดัชนีครั้งล่าสุด กลยุทธ์นี้มักจะใช้เพื่ออัปเดตดัชนีที่มีอยู่เพิ่มขึ้น (แทนที่จะต้องทำการข้ามผ่านทั้งหมดทุกครั้งที่คุณอัปเดตดัชนี)
กลยุทธ์การข้ามผ่านนี้เหมาะสำหรับเมื่อการตรวจจับการเปลี่ยนแปลงทำได้ยากหรือที่เก็บข้อมูลไม่รองรับ คุณมีข้อมูลที่ไม่ใช่ลำดับชั้น และคุณกำลังทำงานกับชุดข้อมูลที่มีขนาดใหญ่มาก
- การส่งผ่านกราฟ
กลยุทธ์การส่งผ่านกราฟจะสแกนโหนดระดับบนสุดทั้งโหนดเพื่อระบุสถานะของแต่ละรายการ จากนั้นเครื่องมือเชื่อมต่อจะส่งผ่านครั้งที่ 2 และจัดทำดัชนีรายการ ในโหนดรากเท่านั้นเป็นรายการใหม่หรือได้รับการอัปเดตตั้งแต่การจัดทำดัชนีครั้งล่าสุด สุดท้าย เครื่องมือเชื่อมต่อจะส่งผ่านรหัสย่อย จากนั้นจึงจัดทำดัชนีรายการในโหนดย่อยที่เป็นรายการใหม่หรือได้รับการอัปเดตแล้ว เครื่องมือเชื่อมต่อจะดำเนินต่อไปเรื่อยๆ ผ่านโหนดย่อยทั้งหมดจนกว่าจะแก้ไขปัญหาทุกรายการแล้ว โดยทั่วไปแล้ว การข้ามผ่านดังกล่าวมักใช้สำหรับที่เก็บแบบลำดับชั้นโดยที่รายการรหัสทั้งหมดไม่สามารถทำได้จริง
กลยุทธ์นี้เหมาะสำหรับกรณีที่คุณมีข้อมูลแบบลำดับขั้นซึ่งจำเป็นต้องทำการ Crawl เช่น ไดเรกทอรีชุดหนังสือหรือหน้าเว็บ
ใช้กลยุทธ์การส่งผ่านและรายการจัดทำดัชนี
องค์ประกอบทั้งหมดที่จัดทำดัชนีได้สำหรับ 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