Pekerja simpul sederhana yang merayapi peta situs untuk menjaga indeks Algolia tetap mutakhir.
Ini menggunakan pemilih CSS sederhana untuk menemukan konten teks sebenarnya untuk diindeks.
Aplikasi ini menggunakan perpustakaan Algolia.
Skrip ini harus dijalankan melalui crontab untuk merayapi seluruh situs web secara berkala.
<loc>
, yaitu urlset/url/loc
.npm i algolia-webcrawler -g
git clone [email protected]:DeuxHuitHuit/algolia-webcrawler.git
git clone https://github.com/DeuxHuitHuit/algolia-webcrawler.git
algolia-webcrawler --config config.json
cd ke root proyek dan jalankan node app
.
Konfigurasi dilakukan melalui file config.json.
Anda dapat memilih file config.json yang disimpan di tempat lain menggunakan tanda --config.
node app --config my-config.json
Minimal, Anda dapat mengedit config.json untuk menetapkan nilai ke opsi berikut: 'app', 'cred', 'indexname' dan setidaknya satu objek 'sitemap'. Jika Anda memiliki beberapa peta situs, harap cantumkan semuanya: sub-peta situs tidak akan dirayapi.
Sebagian besar opsi diperlukan. Tidak ada default yang diberikan, kecuali dinyatakan sebaliknya.
Nama aplikasi Anda.
Objek kredensial Algolia. Lihat 'cred.appid' dan 'cred.apikey'.
ID Aplikasi Algolia Anda.
Kunci API Algolia yang Anda buat.
Penundaan sederhana antara setiap permintaan yang dibuat ke situs web dalam milidetik.
Jumlah maksimum milidetik sebuah entri dapat aktif tanpa diperbarui. Setelah setiap kali dijalankan, aplikasi akan mencari entri lama dan menghapusnya. Jika Anda tidak ingin menghapus entri lama, setel nilai ini ke 0.
String filter yang akan diterapkan saat menghapus entri lama. Berguna ketika Anda ingin menyimpan catatan lama yang tidak dapat diperbarui. Hanya rekaman yang lama dan cocok dengan filter yang akan dihapus.
Ukuran maksimum dalam byte data yang akan dikirim ke Algolia. Standarnya adalah 10.000 tetapi dapat bervariasi berdasarkan paket yang berbeda.
Jika data terlalu besar (berdasarkan maxRecordSize), crawler akan menghapus nilai dari kunci teks. Gunakan atribut ini untuk mengonfigurasi kunci mana yang harus dipangkas ketika rekamannya terlalu besar.
Sebuah objek yang berisi berbagai nilai yang terkait dengan indeks Anda.
Nama indeks Anda.
Sebuah objek yang akan bertindak sebagai argumen terhadap metode Index#setSetting
Algolia.
Silakan baca dokumentasi Algolia tentang hal itu. Atribut valid apa pun yang didokumentasikan untuk metode ini dapat digunakan.
Array string yang menentukan atribut mana yang dapat diindeks, yang berarti pencarian teks lengkap akan dilakukan terhadap atribut tersebut. Untuk daftar lengkap atribut yang mungkin, lihat bagian Objek Tersimpan.
Array string yang menentukan atribut mana yang dapat difilter, yang berarti Anda dapat menggunakannya untuk mengecualikan beberapa rekaman agar tidak dikembalikan. Untuk daftar lengkap atribut yang mungkin, lihat bagian Objek Tersimpan.
Array ini harus berisi daftar objek peta situs.
Peta situs adalah objek yang sangat sederhana dengan dua properti String: url dan lang. Properti 'url' adalah url persis untuk peta situs ini. Properti 'lang' harus menjelaskan bahasa utama yang digunakan oleh url yang ditemukan di peta situs.
Objek yang berisi opsi http berbeda.
String autentikasi, dalam bentuk username:password
simpul. Jika Anda tidak memerlukan autentikasi, Anda masih perlu menentukan String kosong.
Sebuah objek yang berisi pemilih CSS untuk menemukan konten di halaman html.
Pemilih CSS untuk judul halaman.
Pemilih CSS untuk deskripsi halaman.
Pemilih CSS untuk gambar halaman.
Pemilih CSS untuk judul halaman.
Pemilih CSS untuk properti "kunci". Anda dapat menambahkan kunci khusus sesuai keinginan.
Selector juga dapat didefinisikan menggunakan bentuk panjang (yaitu sebagai objek), yang memungkinkan menentukan properti khusus di dalamnya.
Nama atribut untuk mencari nilai. Standarnya adalah ['konten', 'nilai'].
Pemilih CSS sebenarnya yang akan digunakan.
Jumlah maksimum node yang akan diperiksa.
Sebuah objek yang berisi pemilih CSS untuk menemukan elemen yang tidak boleh diindeks. Pemilih CSS tersebut dicocokkan untuk setiap node dan diperiksa terhadap semua induknya untuk memastikan bukan induknya yang dikecualikan.
Pemilih CSS dari elemen yang dikecualikan untuk teks halaman.
Pemilih CSS dari elemen yang dikecualikan untuk properti "kunci". Kuncinya harus cocok dengan yang digunakan di selectors[key].
Sebuah objek yang berisi string formatter. Nilainya dihapus dari hasil asli yang diperoleh dengan pemilih CSS terkait.
String yang akan dihapus dari judul halaman. Bisa juga berupa array string.
String yang akan dihapus dari kunci yang ditentukan. Bisa juga berupa array string.
Fungsi parse digunakan untuk memformat nilai. Tipe yang didukung adalah "integer", "float", "boolean" dan "json".
Nilai default dimasukkan untuk kunci yang ditentukan. Akan ditetapkan jika nilainya salah.
Daftar file javascript untuk memuat kode khusus sebelum menyimpan catatan. Satu-satunya persyaratan adalah mengimplementasikan antarmuka berikut, di mana record
adalah objek yang akan disimpan dan data adalah html.
module . exports = ( record , data ) => {
record . value_from_plugin = 'Yay!' ;
} ;
Semua url diperiksa terhadap semua item dalam daftar hitam. Jika url lengkap atau komponen jalurnya ada dalam daftar hitam, maka url tersebut tidak akan diindeks.
Objek yang disimpan di server Algolia adalah sebagai berikut
{
date : new Date ( ) ,
url : 'http://...' ,
objectID : shasum . digest ( 'base64' ) ,
lang : sitemap . lang ,
http : { } ,
title : '' ,
description : '' ,
image : '' ,
text : [ '...' ]
}
Satu hal yang perlu diperhatikan adalah teks adalah array, karena kami mencoba mempertahankan simpul teks asli -> hubungan nilai sebenarnya. Algolia menangani ini dengan baik.
Satu url dapat diatur untuk mengirim ping kembali ke server web setelah setiap url disimpan di Algolia. Server web akan menerima postingan dengan informasi ini:
result=[success|error]
action=[update|delete]
url=the url inserted
last-modified=[the http header value]
source=algolia-crawler
Pengindeksan dilakukan secara otomatis, pada setiap proses. Untuk mengubah cara kerja pengindeksan, silakan lihat opsi konfigurasi index.settings.
MIT
Dibuat dengan cinta di Montréal oleh Deux Huit Huit
Hak Cipta (c) 2014-2019