Melakukan Deployment Plugin Pengindeks Apache Nutch

Panduan ini ditujukan untuk administrator Plugin Pengindeks Google Cloud Search Apache Nutch, yaitu siapa saja yang bertanggung jawab untuk mendownload, melakukan deployment, mengonfigurasi, dan mengelola plugin pengindeks. Panduan ini menganggap Anda sudah akrab dengan sistem operasi Linux, dasar-dasar web crawling dan Apache Nutch.

Panduan ini mencakup petunjuk untuk menjalankan tugas-tugas utama yang berkaitan dengan deployment plugin pengindeks:

  • Mendownload software plugin pengindeks
  • Mengonfigurasi Google Cloud Search
  • Mengonfigurasi Apache Nutch dan web crawling
  • Memulai web crawl dan upload konten

Informasi tentang tugas yang harus dijalankan administrator G Suite untuk memetakan Google Cloud Search ke plugin pengindeks Nutch tidak ada di panduan ini. Untuk mengetahui informasi tentang tugas-tugas tersebut, lihat Mengelola sumber data pihak ketiga.

Ringkasan Plugin Pengindeks Google Cloud Search untuk Apache Nutch

Secara default, Google Cloud Search dapat menemukan, mengindeks, dan menayangkan konten dari data G Suite, seperti Google Dokumen dan Gmail. Anda dapat memperluas jangkauan Google Cloud Search untuk menyertakan penayangan konten web kepada pengguna dengan melakukan deployment plugin pengindeks untuk Apache Nutch, yaitu sebuah web crawler open source.

Mengonfigurasi file properti

Untuk mengaktifkan plugin pengindeks agar menjalankan web crawl dan mengupload konten ke API pengindeksan, sebagai administrator plugin pengindeks, Anda memberikan informasi khusus ke konektor selama langkah-langkah konfigurasi yang dijelaskan dalam dokumen ini di Langkah-langkah deployment.

Untuk menggunakan plugin pengindeks, Anda harus menetapkan properti di dua file konfigurasi berikut:

  • nutch-site.xml--setelan untuk web crawler Apache Nutch.
  • sdk-configuration.properties -- setelan untuk Google Cloud Search.

Properti di setiap file memungkinkan plugin pengindeks Google Cloud Search dan Apache Nutch untuk saling berkomunikasi.

Web crawl dan mengupload konten

Setelah mengisi file konfigurasi, Anda kini memiliki setelan yang diperlukan untuk memulai web crawl. Apache Nutch akan meng-crawl web, lalu menemukan konten dokumen yang berkaitan dengan konfigurasinya. Dengan plugin pengindeks, mengupload versi biner (atau teks) asli dari konten dokumen ke API pengindeksan Google Cloud Search tempat konten dokumen diindeks dan akhirnya ditayangkan kepada pengguna.

Sistem operasi yang didukung

Plugin Pengindeks Google Cloud Search untuk Apache Nutch harus diinstal di Linux.

Versi Apache Nutch yang didukung

Plugin Pengindeks Google Cloud Search untuk Apache Nutch mendukung versi Nutch 1.14. Software plugin pengindeks mencakup versi Nutch tersebut.

Jenis Dokumen yang Didukung Apache Tika

Apache Nutch versi 1.14 menggunakan Apache Tika versi 1.17 untuk penguraian konten. Untuk mengetahui daftar jenis dokumen yang dapat diindeks plugin pengindeks Apache Nutch, lihat Format Dokumen Yang Didukung Apache Tika.

Dukungan ACL

Plugin pengindeks mendukung pengontrolan akses ke dokumen di domain G Suite dengan menggunakan Daftar Kontrol Akses (ACL).

Jika ACL default diaktifkan di konfigurasi plugin Google Cloud Search (defaultAcl.mode ditetapkan ke selain none dan dikonfigurasikan dengan defaultAcl.*), plugin pengindeks pertama-tama mencoba untuk membuat, lalu melakukan deployment ACL default.

Jika ACL default tidak diaktifkan, plugin kembali memberikan izin baca ke seluruh domain G Suite.

Untuk mengetahui detail deskripsi tentang parameter konfigurasi ACL, lihat parameter konektor yang disediakan Google.

Prasyarat

Sebelum Anda melakukan deployment plugin pengindeks, pastikan Anda memiliki komponen yang diperlukan berikut:

  • Java JRE 1.8 diinstal pada komputer yang menjalankan plugin pengindeks
  • Informasi G Suite yang diperlukan untuk membuat hubungan antara Google Cloud Search dan Apache Nutch:

    Administrator G Suite domain biasanya dapat memberikan kredensial tersebut kepada Anda.

Langkah-langkah deployment

Untuk melakukan deployment plugin pengindeks, ikuti langkah dasar berikut:

  1. Instal Apache Nutch dan software plugin pengindeks
  2. Konfigurasikan Google Cloud Search
  3. Konfigurasikan Apache Nutch
  4. Konfigurasikan crawl web
  5. Mulai web crawl dan upload konten

Langkah 1: Buat dan instal Apache Nutch dan software plugin pengindeks

Instal SDK ke dalam repositori Maven lokal Anda.

  1. Clone repositori SDK dari GitHub. git clone https://github.com/google-cloudsearch/connector-sdk.git cd connector-sdk
  2. Lihat versi SDK yang diinginkan: git checkout tags/v1-0.0.3
  3. Instal komponen SDK: mvn install

Buat konektor.

  1. Clone repositori konektor dari GitHub. git clone https://github.com/google-cloudsearch/apache-nutch-indexer-plugin.git cd apache-nutch-indexer-plugin
  2. Lihat versi konektor yang diinginkan dan buat file ZIP: git checkout tags/v1-0.0.3 mvn package (Untuk melewati Pengujian saat membuat konektor, gunakan mvn package -DskipTests.)
  3. Download Apache Nutch 1.14 dan ikuti Petunjuk Apache Nutch untuk penginstalan.
  4. Ekstrak target/google-cloudsearch-apache-nutch-indexer-plugin-v1.0.0.3.zip yang dibuat di Langkah 2 ke sebuah folder. Salin folder plugins/indexer-google-cloudsearch ke folder plugin instal Apache Nutch (apache-nutch-1.14/plugins).

Untuk melakukan deployment Plugin Pengindeks Apache Nutch, Anda perlu membuat file konfigurasi Google Cloud Search yang disebut sdk-configuration.properties. File ini harus berisi key-value pair yang dibutuhkan konektor.

File konfigurasi tersebut harus menentukan parameter berikut, yang diperlukan untuk mengakses sumber data Google Cloud Search.

Setelan Parameter
ID sumber data api.sourceId = 1234567890abcdef
Wajib ada. ID sumber Google Cloud Search disiapkan oleh administrator G Suite.
Akun layanan api.serviceAccountPrivateKeyFile = ./PrivateKey.json
Wajib ada. File kunci akun layanan Google Cloud Search yang dibuat oleh administrator G Suite untuk aksesibilitas plugin pengindeks.

Contoh berikut menampilkan file konfigurasi Google Cloud Search.

#
# data source access
api.sourceId=1234567890abcdef
api.serviceAccountPrivateKeyFile=./PrivateKey.json
#

File konfigurasi juga dapat berisi beberapa parameter konfigurasi khusus Google Cloud Search lainnya, yang dapat memengaruhi cara plugin pengindeks mengirim data ke dalam API Google Cloud Search. Contoh dari parameter tersebut meliputi defaultAcl.* dan batch..*Untuk mengetahui deskripsi detail setiap parameter, lihat Parameter konektor yang disediakan oleh Google.

Anda dapat mengonfigurasi plugin pengindeks untuk mengisi metadata dan data terstruktur untuk konten yang sedang diindeks. Nilai yang akan diisi di kolom metadata dan data terstruktur dapat diekstrak dari tag meta di konten HTML yang diindeks atau nilai default dapat ditentukan di file konfigurasi.

Setelan Parameter
Judul itemMetadata.title.field=movieTitle
itemMetadata.title.defaultValue=Gone with the Wind
Secara default, plugin menggunakan HTML title sebagai judul dokumen yang sedang diindeks. Jika judul tidak ada, Anda dapat merujuk ke atribut metadata berisi nilai yang sesuai dengan judul dokumen atau menetapkan nilai default.
Stempel waktu pembuatan itemMetadata.createTime.field=releaseDate
itemMetadata.createTime.defaultValue=1940-01-17
Atribut metadata yang berisi nilai stempel waktu pembuatan dokumen.
Waktu terakhir dimodifikasi itemMetadata.updatetime.field=releaseDate
itemMetadata.updatetime.defaultValue=1940-01-17
Atribut metadata yang berisi nilai stempel waktu terakhir dokumen dimodifikasi.
Bahasa dokumen itemMetadata.contentLanguage.field=languageCode
itemMetadata.contentLanguage.defaultValue=en-US
Bahasa konten untuk dokumen yang sedang diindeks.
Jenis objek skema itemMetadata.objectType=movie
Jenis objek yang digunakan situs, seperti yang ditentukan di definisi objek skema sumber data. Konektor tidak akan mengindeks data terstruktur apa pun jika properti ini tidak ditentukan.

Catatan: Properti konfigurasi ini mengarah ke nilai, bukan atribut metadata. Selain itu, konfigurasi ini tidak mendukung akhiran .field dan .defaultValue.

Format datetime

Format datetime menentukan format yang diperkirakan ada di atribut metadata. Jika file konfigurasi tidak berisi parameter berikut, nilai default akan digunakan. Tabel berikut menampilkan parameter tersebut.

Setelan

Parameter

Pola datetime tambahan

structuredData.dateTimePatterns=MM/dd/uuuu HH:mm:ssXXX

Daftar pola java.time.format.DateTimeFormatter tambahan yang dipisahkan titik koma. Pola digunakan saat mengurai nilai string untuk kolom tanggal atau date-time pada metadata atau skema. Nilai default akan berupa daftar kosong, tetapi format RFC 3339 dan RFC 1123 selalu didukung.

Langkah 3: Konfigurasikan Apache Nutch

Anda harus memodifikasi nutch-site.xml dengan menambahkan parameter berikut yang diperlukan untuk berinteraksi dengan Google Cloud Search.

Setelan Parameter
Lokasi ke file konfigurasi Google Cloud Search gcs.config.file = TBS Wajib ada. Lokasi lengkap (absolut) ke file konfigurasi Google Cloud Search.
Format upload gcs.uploadFormat = text Opsional. Format tempat plugin pengindeks mengirim konten dokumen ke API pengindeks Google Cloud Search. Nilai validnya adalah:
  • raw: plugin pengindeks mengirim konten dokumen yang asli dan belum dikonversi.
  • text: plugin pengindeks mengirimkan konten tekstual yang diekstrak. Nilai defaultnya adalah raw.
Plugin mencakup plugin.includes = text Wajib ada. Daftar plugin yang digunakan. Daftar ini harus mencakup, setidaknya:
  • index-basic
  • index-more
  • indexer-google-cloudsearch
conf/nutch-default.xml memberikan nilai default untuk properti ini, tapi Anda perlu secara manual menambahkan indexer-google-cloudsearch ke dalamnya.
Nama metatag metatags.names = text Opsional. Daftar tag yang dipisahkan dengan koma yang memetakan ke properti di skema sumber data yang sesuai. Halaman ini di dokumentasi Nutch punya lebih banyak informasi tentang menyiapkan crawler untuk metatag.

Contoh berikut menampilkan modifikasi yang diperlukan untuk nutch-site.xml.

<property>
  <name>gcs.config.file</name>
  <value>/path/to/sdk-configuration.properties</value>
  <description>Location of GCS Connector SDK configuration file.</description>
</property>
<property>
  <name>plugin.includes</name>
  <value>protocol-(http|httpclient)|urlfilter-regex|index-(basic|more| metadata)|query-(basic|site|url|lang)|indexer-google-cloudsearch|nutch-extensionpoints|parse-(text|html|msexcel|msword|mspowerpoint|pdf|metatags)|summary-basic|scoring-opic|urlnormalizer-(pass|regex|basic)|parse-(html|tika|metatags)|index-(basic|anchor|more|metadata)</value>
</property>

Langkah 4: Konfigurasikan web crawl

Sebelum memulai web crawl, Anda harus mengonfigurasi crawl agar hasil penelusurannya mencakup informasi yang ingin disediakan organisasi Anda saja. Bagian ini mencakup informasi dasar tentang cara:

Untuk mengetahui informasi selengkapnya tentang cara menyiapkan web crawl, lihat tutorial Nutch.

Menyiapkan URL mulai

URL mulai mengontrol lokasi web crawler Apache Nutch saat memulai meng-crawl konten Anda. Web crawler harus dapat menjangkau semua konten yang ingin Anda sertakan dalam crawl tertentu dengan mengikuti link dari satu URL mulai atau lebih. URL mulai wajib ada.

Untuk menyiapkan URL mulai:

  1. Ubah direktori kerja ke direktori penginstalan nutch:
    $ cd ~/nutch/apache-nutch-X.Y/
  2. Buat direktori untuk url:
    $ mkdir urls
  3. Buat file dengan nama seed.txt dan tuliskan URL ke dalamnya (1 per baris):
    $ nano urls/seed.txt

Menyiapkan aturan ikuti dan aturan jangan-ikuti

Aturan ikuti URL mengontrol URL mana yang akan di-crawl dan disertakan di indeks Google Cloud Search. Sebelum meng-crawl URL apa pun, web crawler akan memeriksanya dengan aturan ikuti URL. Hanya URL yang cocok dengan aturan tersebut yang akan di-crawl dan diindeks.

Aturan jangan ikuti tidak meng-crawl dan tidak menyertakan URL ke dalam indeks Google Cloud Search. Jika URL berisi pola jangan di-crawl, web crawler tidak akan meng-crawlnya.

Untuk menyiapkan aturan ikuti URL dan aturan jangan ikuti URL:

  1. Ubah direktori kerja ke direktori penginstalan nutch:
    $ cd ~/nutch/apache-nutch-X.Y/
  2. Edit conf/regex-urlfilter.txt untuk mengubah aturan ikuti/jangan ikuti:
    $ nano conf/regex-urlfilter.txt
  3. Tempatkan ekspresi regex (bisa menggunakan ekspresi terbuka) dengan awalan "+" atau "-" ke pola URL ikuti / jangan ikuti, ekstensi, dan sebagainya, seperti yang ditampilkan dalam contoh berikut..

Contoh:

# skip file extensions
-\.(gif|GIF|jpg|JPG|png|PNG|ico)

# skip protocols (file: ftp: and mailto:)
    -^(file|ftp|mailto):

# allow urls starting with https://support.google.com/gsa/
+^https://support.google.com/gsa/

# accept anything else
# (commented out due to the single url-prefix allowed above)
#+.

Mengedit skrip crawl

Jika parameter gcs.uploadFormat tidak ada atau ditetapkan ke "raw," Anda harus menambahkan argumen "-addBinaryContent -base64" yang akan diteruskan ke perintah nutch index. Argumen ini memberi tahu modul Pengindeks Nutch untuk memasukkan konten biner di Base64 ketika menjalankan plugin pengindeks. Skrip ./bin/crawl tidak memiliki argumen ini secara default.

Edit skrip crawl.sh di apache-nutch-1.14-SNAPSHOT/bin dan tambahkan:

      if $INDEXFLAG; then
          echo "Indexing $SEGMENT to index"
          __bin_nutch index $JAVA_PROPERTIES "$CRAWL_PATH"/crawldb  -addBinaryContent -base64 -linkdb "$CRAWL_PATH"/linkdb "$CRAWL_PATH"/segments/$SEGMENT

          echo "Cleaning up index if possible"
          __bin_nutch clean $JAVA_PROPERTIES "$CRAWL_PATH"/crawldb
      else
          echo "Skipping indexing ..."

Langkah 5: Mulai web crawl dan upload konten

Setelah Anda menginstal dan menyiapkan plugin pengindeks, Anda dapat menjalankannya sendiri dalam mode lokal. Gunakan skrip dari ./bin untuk menjalankan tugas crawling atau perintah nutch individu.

Contoh berikut mengasumsikan komponen yang diperlukan berada di direktori lokal pada sistem Linux. Jalankan nutch dengan perintah berikut dari folder apache-nutch-1.14-SNAPSHOT:

bin/crawl -i -s urls/ crawl-test/ 5

Log crawl tersedia di output std (terminal) atau di logs/directory. Untuk mengarahkan output logging atau verbose logging lebih lanjut, edit conf/log4j.properties.