Konektor konten adalah program software yang menelusuri data dalam repositori perusahaan dan mengisi sumber data. Google menyediakan opsi berikut untuk mengembangkan konektor konten:
Content Connector SDK. Ini adalah opsi yang tepat untuk programmer Java. SDK adalah wrapper di sekitar REST API yang memungkinkan Anda membuat konektor dengan cepat. Untuk membuat konektor konten menggunakan SDK, lihat Membuat konektor konten menggunakan Content Connector SDK.
Library API atau REST API level rendah. Gunakan opsi ini jika Anda tidak menggunakan Java atau jika codebase Anda lebih mengakomodasi REST API atau library. Untuk membuat konektor konten menggunakan REST API, lihat Membuat konektor konten menggunakan REST API.
Konektor konten standar melakukan tugas-tugas berikut:
- Membaca dan memproses parameter konfigurasi.
- Menarik potongan data terpisah yang dapat diindeks, yang disebut "item," dari repositori pihak ketiga.
- Menggabungkan ACL, metadata, dan data konten ke dalam item yang dapat diindeks.
- Mengindeks item ke sumber data Cloud Search.
- (Opsional) Mendeteksi pemberitahuan perubahan dari repositori. Pemberitahuan perubahan diubah menjadi permintaan pengindeksan agar sumber data Cloud Search tetap sinkron. Konektor hanya melakukan tugas ini jika repositori mendukung deteksi perubahan.
Buat konektor konten menggunakan Content Connector SDK
Bagian berikut menjelaskan cara membuat konektor konten menggunakan Content Connector SDK.
Menyiapkan dependensi
Sertakan dependensi ini dalam file build Anda.
Maven
xml
<dependency>
<groupId>com.google.enterprise.cloudsearch</groupId>
<artifactId>google-cloudsearch-indexing-connector-sdk</artifactId>
<version>v1-0.0.3</version>
</dependency>
Gradle
groovy
compile group: 'com.google.enterprise.cloudsearch',
name: 'google-cloudsearch-indexing-connector-sdk',
version: 'v1-0.0.3'
Buat konfigurasi konektor Anda
Setiap konektor menggunakan file konfigurasi untuk parameter seperti ID repositori Anda.
Tentukan parameter sebagai pasangan key-value, seperti
api.sourceId=1234567890abcdef.
Google Cloud Search SDK menyertakan parameter yang disediakan Google untuk semua konektor. Anda harus mendeklarasikan hal berikut dalam file konfigurasi:
- Konektor konten: Nyatakan
api.sourceIddanapi.serviceAccountPrivateKeyFile. Parameter ini mengidentifikasi repositori Anda dan kunci pribadi yang diperlukan untuk akses.
- Konektor identitas: Nyatakan
api.identitySourceIduntuk mengidentifikasi sumber identitas eksternal Anda. Untuk sinkronisasi pengguna, deklarasikan jugaapi.customerId(ID unik untuk akun Google Workspace Anda).
Deklarasikan parameter lain yang disediakan Google hanya untuk mengganti nilai defaultnya. Untuk mengetahui detail tentang cara membuat ID dan kunci, lihat Parameter yang disediakan Google.
Anda juga dapat menentukan parameter spesifik repositori dalam file konfigurasi.
Teruskan file konfigurasi ke konektor
Tetapkan properti sistem config untuk meneruskan file konfigurasi. Gunakan argumen -D
saat memulai konektor. Contoh:
java -classpath myconnector.jar -Dconfig=MyConfig.properties MyConnector
Jika Anda menghilangkan argumen ini, SDK akan mencoba menggunakan file bernama connector-config.properties di direktori lokal.
Tentukan strategi traversal Anda
Fungsi utama konektor konten adalah untuk menelusuri repositori dan mengindeks datanya. Anda harus menerapkan strategi berdasarkan ukuran dan tata letak repositori Anda. Anda dapat mendesain strategi Anda sendiri atau memilih strategi dari SDK:
- Strategi traversal penuh
- Memindai seluruh repositori dan mengindeks setiap item. Strategi ini paling cocok untuk repositori kecil yang dapat menanggung overhead traversal penuh selama setiap pengindeksan. Gunakan untuk repositori kecil dengan data yang sebagian besarnya statis dan tidak hierarkis, atau saat deteksi perubahan sulit dilakukan.
- Strategi traversal daftar
- Memindai seluruh repositori untuk menentukan status setiap item, lalu mengindeks hanya item baru atau yang diperbarui. Gunakan ini untuk update inkremental ke indeks besar yang tidak hierarkis saat deteksi perubahan tidak didukung.
- Traversal grafik
- Memindai node induk untuk menentukan status itemnya, lalu mengindeks item baru atau yang diupdate dalam node tersebut. Kemudian, secara rekursif memproses node turunan. Gunakan ini untuk repositori hierarkis yang tidak memungkinkan pembuatan daftar semua ID, seperti struktur direktori atau situs.
SDK menerapkan strategi ini di class konektor template. Template ini dapat mempercepat pengembangan Anda. Untuk menggunakan template, lihat bagian yang sesuai:
- Membuat konektor traversal penuh menggunakan class template
- Membuat konektor traversal daftar menggunakan class template
- Membuat konektor traversal grafik menggunakan class template
Membuat konektor traversal penuh menggunakan class template
Bagian ini mengacu pada kode dari FullTraversalSample.
Menerapkan titik entri konektor
Titik entri adalah metode main(). Tindakan ini akan membuat instance
Application
dan memanggil
start()
untuk menjalankan konektor.
Sebelum memanggil application.start(), gunakan class
IndexingApplication.Builder
untuk membuat instance template
FullTraversalConnector. Template ini menerima objek
Repository.
SDK memanggil initConfig() setelah metode main() Anda memanggil
Application.build(). Metode initConfig():
- Memastikan
Configurationbelum diinisialisasi. - Menginisialisasi objek
Configurationdengan key-value pair yang disediakan Google.
Menerapkan antarmuka Repository
Objek Repository melakukan traversal dan mengindeks item repositori. Saat menggunakan template, Anda hanya perlu mengganti metode tertentu di antarmuka Repository. Untuk FullTraversalConnector, ganti:
init(): Untuk penyiapan dan inisialisasi repositori.getAllDocs(): Untuk menjelajahi dan mengindeks semua item. Metode ini dipanggil satu kali untuk setiap traversal terjadwal.- (Opsional)
getChanges(): Jika repositori Anda mendukung deteksi perubahan, ganti metode ini untuk mengambil dan mengindeks item yang diubah. - (Opsional)
close(): Untuk pembersihan repositori selama penonaktifan.
Setiap metode menampilkan objek
ApiOperation, yang melakukan pengindeksan menggunakan IndexingService.indexItem().
Mendapatkan parameter konfigurasi khusus
Untuk menangani konfigurasi konektor, Anda harus mengambil parameter kustom dari objek Configuration. Lakukan tugas ini dalam metode
init()
class
Repository
Anda.
Class Configuration mencakup metode untuk mengambil berbagai jenis data.
Setiap metode menampilkan objek ConfigValue. Gunakan metode
get()
objek ConfigValue untuk mengambil nilai. Cuplikan dari
FullTraversalSample
ini menunjukkan cara mengambil nilai bilangan bulat kustom:
Untuk mengambil dan mengurai parameter dengan beberapa nilai, gunakan salah satu jenis parser class Configuration. Cuplikan dari konektor tutorial ini menggunakan
getMultiValue
untuk mengambil daftar nama repositori GitHub:
Melakukan traversal penuh
Ganti getAllDocs() untuk melakukan traversal penuh. Metode ini menerima
checkpoint untuk melanjutkan pengindeksan jika terganggu. Untuk setiap item:
- Tetapkan izin.
- Menetapkan metadata.
- Gabungkan menjadi
RepositoryDoc. - Gabungkan setiap item ke dalam iterator yang ditampilkan oleh
getAllDocs().
Jika set item terlalu besar untuk satu panggilan, gunakan checkpoint dan panggil
hasMore(true).
Menetapkan izin untuk suatu item
Repositori menggunakan Daftar Kontrol Akses (ACL) untuk mengidentifikasi pengguna atau grup yang memiliki akses ke suatu item. ACL mencantumkan ID pengguna atau grup yang diberi otorisasi.
Untuk memastikan pengguna hanya melihat hasil penelusuran yang aksesnya mereka miliki, Anda harus mereplikasi ACL repositori Anda. Sertakan ACL saat mengindeks item sehingga Google Cloud Search dapat memberikan tingkat akses yang benar.
Content Connector SDK menyertakan class dan metode untuk membuat model ACL dari sebagian besar repositori. Menganalisis ACL repositori Anda dan membuat ACL yang sesuai untuk Cloud Search selama pengindeksan. Pemodelan ACL yang kompleks, seperti yang menggunakan pewarisan, memerlukan perencanaan yang cermat. Untuk mengetahui informasi selengkapnya, lihat ACL Cloud Search.
Gunakan class
Acl.Builder
untuk menyetel akses. Cuplikan dari contoh penelusuran lengkap ini memungkinkan semua pengguna domain (getCustomerPrincipal())
membaca semua item (setReaders()):
Membuat model ACL repositori dengan benar, terutama yang menggunakan model pewarisan, memerlukan informasi dalam ACL Cloud Search.
Menetapkan metadata untuk suatu item
Metadata disimpan dalam objek Item. Untuk membuat Item, Anda memerlukan
ID, jenis item, ACL, URL, dan versi yang unik. Gunakan class helper
IndexingItemBuilder.
Membuat item yang dapat diindeks
Gunakan class
RepositoryDoc.Builder.
RepositoryDoc adalah ApiOperation yang melakukan permintaan
IndexingService.indexItem().
Gunakan metode
setRequestMode()
dari class RepositoryDoc.Builder untuk menyetel permintaan pengindeksan ke
ASYNCHRONOUS atau SYNCHRONOUS:
ASYNCHRONOUS- Mode ini memiliki latensi pengindeksan hingga penayangan yang lebih lama, tetapi mengakomodasi kuota throughput yang lebih besar. Gunakan mode asinkron untuk pengindeksan awal (pengisian ulang) seluruh repositori.
SYNCHRONOUS- Mode ini memiliki latensi pengindeksan hingga penayangan yang lebih pendek, tetapi kuota throughput yang lebih kecil. Gunakan mode sinkron untuk mengindeks update dan perubahan repositori. Mode permintaan ditetapkan ke
SYNCHRONOUSsecara default jika tidak ditentukan.
Gabungkan setiap item yang dapat diindeks dalam iterator
Metode getAllDocs() menampilkan
CheckpointCloseableIterable
objek RepositoryDoc. Gunakan class
CheckpointCloseableIterableImpl.Builder.
Langkah berikutnya
- (Opsional) Jika throughput pengindeksan lambat, lihat Meningkatkan kecepatan pengindeksan.
- (Opsional) Terapkan
close()untuk melepaskan resource. - (Opsional) Buat konektor identitas.
Membuat konektor traversal daftar menggunakan class template
Cloud Search Indexing Queue menyimpan ID dan hash opsional untuk item repositori. Konektor traversal daftar mendorong ID ke antrean ini dan mengambilnya untuk pengindeksan. Cloud Search mengelola antrean ini untuk menentukan status item, seperti penghapusan. Lihat Cloud Search Indexing Queue.
Bagian ini mengacu pada ListTraversalSample.
Menerapkan titik entri konektor
Metode main() membuat instance Application dan memanggil start(). Gunakan
IndexingApplication.Builder untuk membuat instance
template ListingConnector.
Menerapkan antarmuka Repository
Ganti metode berikut untuk ListingConnector:
init(): Untuk penyiapan repositori.getIds(): Untuk mengambil ID dan hash semua catatan.getDoc(): Untuk menambahkan, memperbarui, atau menghapus item dari indeks.- (Opsional)
getChanges(): Untuk update inkremental menggunakan deteksi perubahan. - (Opsional)
close(): Untuk pembersihan repositori.
Melakukan traversal daftar
Ganti getIds() untuk mengambil ID dan hash. Ganti getDoc() untuk menangani setiap item dalam Cloud Search Indexing Queue.
Mendorong ID item dan nilai hash
Ganti getIds() untuk mengambil ID dan hash konten. Gabungkan ke dalam permintaan
PushItems
ke Antrean Pengindeksan.
Gunakan PushItems.Builder untuk mengemas ID dan hash.
Mengambil dan menangani setiap item
Ganti getDoc() untuk menangani item dalam Indexing Queue. Item dapat berupa baru, dimodifikasi, tidak berubah, atau dihapus.
- Periksa apakah ID item ada di repositori. Jika tidak, hapus.
- Polling indeks untuk status. Jika tidak berubah (
ACCEPTED), jangan lakukan apa pun. - Mengindeks item yang berubah atau baru: tetapkan izin, tetapkan metadata, gabungkan ke dalam
RepositoryDoc, dan kembalikan.
Menangani item yang dihapus
Cuplikan ini menunjukkan cara menentukan apakah suatu item ada dan menghapusnya jika tidak ada.
Menangani item yang tidak berubah
Polling Antrean Pengindeksan untuk menangani item yang tidak berubah.
Contoh ini menggunakan hash untuk mendeteksi perubahan.
Menetapkan izin untuk suatu item
Repositori menggunakan Daftar Kontrol Akses (ACL) untuk mengidentifikasi pengguna atau grup yang memiliki akses ke suatu item. ACL mencantumkan ID pengguna atau grup yang diberi otorisasi.
Untuk memastikan pengguna hanya melihat hasil penelusuran yang aksesnya mereka miliki, Anda harus mereplikasi ACL repositori Anda. Sertakan ACL saat mengindeks item sehingga Google Cloud Search dapat memberikan tingkat akses yang benar.
Content Connector SDK menyertakan class dan metode untuk membuat model ACL dari sebagian besar repositori. Menganalisis ACL repositori Anda dan membuat ACL yang sesuai untuk Cloud Search selama pengindeksan. Pemodelan ACL yang kompleks, seperti yang menggunakan pewarisan, memerlukan perencanaan yang cermat. Untuk mengetahui informasi selengkapnya, lihat ACL Cloud Search.
Gunakan class
Acl.Builder
untuk menyetel akses. Cuplikan dari contoh penelusuran lengkap ini memungkinkan semua pengguna domain (getCustomerPrincipal())
membaca semua item (setReaders()):
Membuat model ACL repositori dengan benar, terutama yang menggunakan model pewarisan, memerlukan informasi dalam ACL Cloud Search.
Menetapkan metadata untuk suatu item
Membuat item yang dapat diindeks
Gunakan metode
setRequestMode()
dari class RepositoryDoc.Builder untuk menyetel permintaan pengindeksan ke
ASYNCHRONOUS atau SYNCHRONOUS:
ASYNCHRONOUS- Mode ini memiliki latensi pengindeksan hingga penayangan yang lebih lama, tetapi mengakomodasi kuota throughput yang lebih besar. Gunakan mode asinkron untuk pengindeksan awal (pengisian ulang) seluruh repositori.
SYNCHRONOUS- Mode ini memiliki latensi pengindeksan hingga penayangan yang lebih pendek, tetapi kuota throughput yang lebih kecil. Gunakan mode sinkron untuk mengindeks update dan perubahan repositori. Mode permintaan ditetapkan ke
SYNCHRONOUSsecara default jika tidak ditentukan.
Langkah berikutnya
Berikut beberapa langkah yang dapat Anda ambil:
- (opsional) Terapkan metode
close()untuk merilis resource apa pun sebelum penghentian. - (opsional) Buat konektor identitas menggunakan Content Connector SDK.
Membuat konektor traversal grafik menggunakan class template
Cloud Search Indexing Queue menyimpan ID dan nilai hash opsional untuk setiap item dalam repositori. Konektor traversal grafik mendorong ID item ke Google Cloud Search Indexing Queue dan mengambilnya satu per satu untuk diindeks. Google Cloud Search mengelola antrean dan membandingkan konten antrean untuk menentukan status item, seperti apakah suatu item telah dihapus dari repositori. Untuk mengetahui informasi selengkapnya tentang Cloud Search Indexing Queue, lihat Google Cloud Search Indexing Queue.
Selama pengindeksan, konten item diambil dari repositori data dan setiap ID item turunan didorong ke antrean. Konektor memproses ID induk dan turunan secara berulang hingga semua item ditangani.
Menerapkan titik entri konektor
Titik entri ke konektor adalah metode
main(). Metode ini membuat instance class
Application
dan memanggil metode
start()
untuk menjalankan konektor.
Sebelum memanggil
application.start(),
gunakan class
IndexingApplication.Builder
untuk membuat instance template ListingConnector. ListingConnector
menerima
objek
Repository
yang metodenya Anda terapkan.
Menerapkan antarmuka Repository
Ganti init(), getIds(), getDoc(), dan secara opsional getChanges() atau
close().
Melakukan traversal grafik
Ganti getIds() untuk mengambil ID awal dan getDoc() untuk menangani item dan mendorong ID turunan ke antrean.
Mendorong ID item dan nilai hash
Mengambil dan menangani setiap item
- Periksa apakah ID ada di repositori. Jika tidak, hapus item.
- Untuk item yang sudah ada, tetapkan izin dan metadata, lalu gabungkan ke dalam
RepositoryDoc. - Kirim ID turunan ke Indexing Queue.
- Menampilkan
RepositoryDoc.
Menangani item yang dihapus
Menetapkan metadata dan membuat item
Menempatkan ID turunan dalam Indexing Queue
Membuat konektor konten menggunakan REST API
Bagian berikut menjelaskan cara membuat konektor konten menggunakan REST API.
Tentukan strategi traversal Anda
Strategi (Penuh, Daftar, dan Grafik) secara konseptual sama seperti untuk SDK. Terapkan strategi yang Anda pilih menggunakan REST API.
Menerapkan strategi traversal Anda dan item indeks
Daftarkan skema Anda, lalu isi indeks menggunakan:
- (Opsional)
items.uploaduntuk file yang lebih besar dari 100 KiB. - (Opsional)
media.uploaduntuk file media. items.indexuntuk mengindeks item.Contoh permintaan pengindeksan:
{ "name": "datasource/<data_source_id>/items/titanic", "acl": { "readers": [ { "gsuitePrincipal": { "gsuiteDomain": true } } ] }, "metadata": { "title": "Titanic", "viewUrl": "http://www.imdb.com/title/tt2234155/", "objectType": "movie" }, "structuredData": { "object": { "properties": [ { "name": "movieTitle", "textValues": { "values": ["Titanic"] } } ] } }, "content": { "inlineContent": "A seventeen-year-old aristocrat falls in love...", "contentFormat": "TEXT" }, "version": "01", "itemType": "CONTENT_ITEM" }(Opsional) Gunakan
items.getuntuk memverifikasi pengindeksan.
Menangani perubahan repositori
Mengindeks ulang seluruh repositori secara berkala untuk pengindeksan penuh. Untuk traversal daftar atau grafik, gunakan Google Cloud Indexing Queue untuk melacak perubahan dan hanya mengindeks apa yang telah berubah. Gunakan items.push untuk menambahkan item
ke antrean.