เครื่องมือเชื่อมต่อเนื้อหาคือโปรแกรมซอฟต์แวร์ที่ใช้ในการสำรวจข้อมูลในที่เก็บขององค์กรและสร้างแหล่งข้อมูล Google มีตัวเลือกต่อไปนี้ สําหรับการพัฒนาตัวเชื่อมต่อเนื้อหา
SDK ของ Content Connector ตัวเลือกนี้เหมาะสำหรับกรณีที่คุณเขียนโปรแกรมใน 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 เช่น ชุดไดเรกทอรีหรือหน้าเว็บ
กลยุทธ์การข้ามแต่ละรายการเหล่านี้จะได้รับการติดตั้งใช้งานโดยคลาส Template Connector ใน 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()
โปรดทราบว่า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
คุณต้องมี
สตริงที่ไม่ซ้ำกันอย่างน้อย 1 รายการ, ประเภทรายการ, 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 จะเรียกใช้การเรียกดัชนีแต่ละครั้งที่อยู่ใน Iterator
ขั้นตอนถัดไป
ขั้นตอนถัดไปที่คุณอาจต้องดำเนินการมีดังนี้
- (ไม่บังคับ) หากปริมาณงานการจัดทำดัชนีดูเหมือนจะช้า โปรดดูเพิ่มอัตราการจัดทำดัชนีสำหรับ
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()
ระบบจะเรียกใช้เมธอดนี้ 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()
เพื่อดึงรหัสสินค้าและค่าแฮชของเนื้อหาที่เชื่อมโยงจาก
ที่เก็บ จากนั้นระบบจะจัดแพ็กเกจคู่รหัสและค่าแฮชลงในคำขอการดำเนินการแบบพุช
ไปยังคิวการจัดทำดัชนีของ 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
คุณต้องมี
สตริงที่ไม่ซ้ำกันอย่างน้อย 1 รายการ, ประเภทรายการ, 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()
เพื่อดึงรหัสสินค้าและค่าแฮชของเนื้อหาที่เชื่อมโยงจาก
ที่เก็บ จากนั้นระบบจะจัดแพ็กเกจคู่รหัสและค่าแฮชลงในคำขอการดำเนินการแบบพุช
ไปยังคิวการจัดทำดัชนีของ 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
คุณต้องมี
สตริงที่ไม่ซ้ำกันอย่างน้อย 1 รายการ, ประเภทรายการ, ACL, URL และเวอร์ชันของรายการ
ข้อมูลโค้ดต่อไปนี้แสดงวิธีสร้าง Item
โดยใช้คลาสตัวช่วย
IndexingItemBuilder
สร้างรายการที่จัดทำดัชนีได้
เมื่อตั้งค่าข้อมูลเมตาสำหรับรายการแล้ว คุณจะสร้างรายการที่จัดทำดัชนีได้จริง
โดยใช้
RepositoryDoc.Builder
ตัวอย่างต่อไปนี้แสดงวิธีสร้างรายการที่จัดทำดัชนีได้รายการเดียว
RepositoryDoc
เป็นApiOperation
ประเภทหนึ่งที่ดำเนินการคำขอ IndexingService.indexItem()
จริง
นอกจากนี้ คุณยังใช้วิธีการ
setRequestMode()
ของคลาส
RepositoryDoc.Builder
เพื่อระบุคำขอจัดทำดัชนีเป็น ASYNCHRONOUS
หรือ SYNCHRONOUS
ได้ด้วย
ASYNCHRONOUS
- โหมดอะซิงโครนัสจะทำให้เวลาในการตอบสนองจากการจัดทำดัชนีไปจนถึงการแสดงผลนานขึ้น และ รองรับโควต้าอัตราการส่งข้อมูลขนาดใหญ่สำหรับคำขอจัดทำดัชนี ขอแนะนำให้ใช้โหมดไม่พร้อมกันสำหรับการจัดทำดัชนีเริ่มต้น (การป้อนข้อมูลย้อนหลัง) ของทั้งที่เก็บ
SYNCHRONOUS
- โหมดพร้อมกันจะทำให้เวลาในการตอบสนองตั้งแต่การจัดทำดัชนีจนถึงการแสดงผลสั้นลงและ
รองรับโควต้าอัตราการส่งข้อมูลแบบจำกัด ขอแนะนำให้ใช้โหมดพร้อมกัน
สำหรับการจัดทำดัชนีการอัปเดตและการเปลี่ยนแปลงที่เกิดขึ้นกับที่เก็บ หากไม่ได้ระบุไว้ โหมดคำขอจะใช้
SYNCHRONOUS
เป็นค่าเริ่มต้น
วางรหัสย่อยในคิวการจัดทำดัชนีของ Cloud Search
ข้อมูลโค้ดต่อไปนี้แสดงวิธีรวมรหัสย่อยสำหรับรายการหลักที่กำลังประมวลผลลงในคิวเพื่อประมวลผล ระบบจะประมวลผลรหัสเหล่านี้ หลังจากจัดทำดัชนีรายการหลักแล้ว
ขั้นตอนถัดไป
ขั้นตอนถัดไปที่คุณอาจต้องดำเนินการมีดังนี้
- (ไม่บังคับ) ใช้เมธอด
close()
เพื่อปล่อยทรัพยากรทั้งหมดก่อนปิดเครื่อง - (ไม่บังคับ) สร้างโปรแกรมเชื่อมต่อข้อมูลประจำตัว โดยใช้ 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
เพื่อจัดทำดัชนีรายการ เช่น หากสคีมาใช้คำจำกัดความออบเจ็กต์ในสคีมา ภาพยนตร์ คำขอจัดทำดัชนีสำหรับรายการเดียว จะมีลักษณะดังนี้{ "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