Pembaruan proyek : Saya menghentikan pekerjaan saya dengan Bangau. Terima kasih kepada semua orang yang menikmati menggunakan Stork selama beberapa tahun terakhir! |
Pencarian web yang sangat cepat, dibuat untuk situs statis.
Stork adalah perpustakaan untuk membuat antarmuka pencarian teks lengkap yang indah, cepat, dan akurat di web.
Itu datang dalam dua bagian. Pertama, ini adalah alat baris perintah yang mengindeks konten dan membuat file indeks pencarian yang dapat Anda unggah ke server web. Kedua, ini adalah pustaka Javascript yang menggunakan file indeks tersebut untuk membangun antarmuka pencarian interaktif yang menampilkan hasil pencarian optimal segera kepada pengguna Anda, saat mereka mengetik.
Stork dibangun dengan Rust, dan perpustakaan Javascript menggunakan WebAssembly di belakang layar. Sangat mudah untuk memulai dan bahkan lebih mudah untuk disesuaikan sehingga sesuai dengan kebutuhan Anda. Ini sempurna untuk situs Jamstack dan blog pribadi, tetapi dapat digunakan di mana pun Anda memerlukan bilah pencarian interaktif.
Saat ini sedang dikembangkan oleh James Little
Mari kita letakkan kotak pencarian online yang mencari di dalam teks Federalist Papers.
Lihat demo ini langsung di https://stork-search.net.
<!DOCTYPE html >
< html lang =" en " >
< head >
< title > Federalist Search </ title >
</ head >
< body >
< div class =" stork-wrapper " >
< input data-stork =" federalist " class =" stork-input " />
< div data-stork =" federalist-output " class =" stork-output " > </ div >
</ div >
< script src =" https://files.stork-search.net/stork.js " > </ script >
< script >
stork . register (
"federalist" ,
"http://files.stork-search.net/federalist.st"
) ;
</ script >
</ body >
</ html >
Bangau menghubungkan ke HTML yang ada yang Anda sertakan di halaman Anda. Setiap instance Stork harus memiliki hook input dan daftar hasil; kedua elemen tersebut harus ditempatkan di dalam pembungkus, meskipun pembungkusnya bersifat opsional.
Kait input harus memiliki atribut data-stork="federalist"
, dengan federalist
adalah nama yang Anda gunakan untuk mendaftarkan mesin pencari tersebut. (Dengan cara ini, Anda dapat memiliki beberapa kotak pencarian independen pada satu halaman, semuanya menunjuk ke contoh yang berbeda.) Tidak harus bersifat federalist
-- Anda dapat mengubahnya sesuai keinginan Anda.
Daftar hasil harus berupa tag <div>
kosong dengan atribut data-stork="federalist-results"
. Sekali lagi, di sini, Anda dapat mengubah federalist
menjadi apa pun yang Anda inginkan.
Kelas pada contoh di atas ( stork-input
, stork-output
) ditujukan untuk tema. Kebanyakan tema Bangau menggunakan format di atas; dokumentasi tema akan memberi tahu Anda jika memerlukan sesuatu yang berbeda. Anda juga dapat mendesain tema Anda sendiri, yang mana gaya dan nama kelasnya terserah Anda.
Anda perlu menyertakan stork.js
, yang dapat Anda muat dari CDN Stork atau host sendiri. Ini akan memuat blob Stork WebAssembly dan membuat objek Stork, yang memungkinkan pendaftaran dan konfigurasi indeks.
Kemudian, Anda harus mendaftarkan setidaknya satu indeks:
stork . register ( "federalist" , "http://files.stork-search.net/federalist.st" ) ;
Indeks pencarian yang Anda buat perlu disimpan di suatu tempat dengan URL publik. Untuk mendaftar
Ini mendaftarkan indeks yang disimpan di http://files.stork-search.net/federalist.st
dengan nama federalist
; atribut data-stork
dalam HTML akan dikaitkan dengan nama ini.
Terakhir, Anda dapat mengatur beberapa opsi konfigurasi tentang bagaimana bilah pencarian Anda akan berinteraksi dengan indeks dan halaman.
Anda mungkin tidak ingin menambahkan antarmuka ke situs web Anda sendiri yang memungkinkan Anda mencari di surat kabar Federalis. Inilah cara menjadikan bilah pencarian milik Anda.
Untuk membuat indeks, Anda memerlukan Stork yang dapat dieksekusi di komputer Anda, yang dapat Anda instal pada rilis Github terbaru atau dengan menjalankan cargo install stork-search --locked
jika Anda memasang rantai alat Rust.
Indeks pencarian didasarkan pada struktur dokumen: Anda memberi Stork daftar dokumen di disk dan menyertakan beberapa metadata tentang dokumen tersebut, dan Stork akan membuat indeks pencariannya berdasarkan konten dokumen tersebut.
Pertama, Anda memerlukan file konfigurasi yang menjelaskan, antara lain, daftar file tersebut:
[ input ]
base_directory = " test/federalist "
files = [
{ path = " federalist-1.txt " , url = " /federalist-1/ " , title = " Introduction " },
{ path = " federalist-2.txt " , url = " /federalist-2/ " , title = " Concerning Dangers from Foreign Force and Influence " },
{ path = " federalist-3.txt " , url = " /federalist-3/ " , title = " Concerning Dangers from Foreign Force and Influence 2 " },
{ path = " federalist-4.txt " , url = " /federalist-4/ " , title = " Concerning Dangers from Foreign Force and Influence 3 " },
{ path = " federalist-5.txt " , url = " /federalist-5/ " , title = " Concerning Dangers from Foreign Force and Influence 4 " },
{ path = " federalist-6.txt " , url = " /federalist-6/ " , title = " Concerning Dangers from Dissensions Between the States " },
{ path = " federalist-7.txt " , url = " /federalist-7/ " , title = " Concerning Dangers from Dissensions Between the States 2 " },
{ path = " federalist-8.txt " , url = " /federalist-8/ " , title = " The Consequences of Hostilities Between the States " },
{ path = " federalist-9.txt " , url = " /federalist-9/ " , title = " The Union as a Safeguard Against Domestic Faction and Insurrection " },
{ path = " federalist-10.txt " , url = " /federalist-10/ " , title = " The Union as a Safeguard Against Domestic Faction and Insurrection 2 " }
]
File TOML ini menjelaskan direktori dasar semua dokumen Anda, lalu mencantumkan setiap dokumen beserta URL web tempat dokumen tersebut ditemukan, beserta judul dokumen tersebut.
Dari sana, Anda dapat membangun indeks pencarian dengan menjalankan:
$ stork build --input federalist.toml --output federalist.st
Ini akan membuat file baru di federalist.st
. Anda dapat mencarinya dengan alat baris perintah yang sama:
$ stork search --index federalist.st --query " liberty "
Untuk menyematkan antarmuka pencarian Stork di situs web Anda, pertama-tama unggah file indeks ke server web Anda, lalu teruskan URL-nya ke fungsi stork.register()
di Javascript halaman web Anda.
Anda dapat membaca lebih banyak dokumentasi dan mempelajari lebih lanjut tentang penyesuaian di situs web proyek: https://stork-search.net.
Untuk membangun Bangau, Anda memerlukan:
Repositori ini terstruktur seperti ruang kerja Cargo pada umumnya, dengan beberapa modifikasi.
stork-*
menyimpan paket Rust. stork-cli
dan stork-wasm
adalah paket tingkat atas; segala sesuatu yang lain adalah ketergantungan.js
menyimpan kode sumber Javascript.test-assets
menyimpan aset biner yang diperlukan oleh pengujian fungsional Stork.local-dev
menyimpan file konfigurasi, corpora, dan file indeks yang diperlukan untuk membangun dan menjalankan halaman web pengujian yang digunakan untuk pengembangan lokal.Anda dapat membangun proyek menggunakan titik masuk Rust atau titik masuk Javascript (instruksi pembuatan tercantum di bawah). Setelah Anda membangun proyek, Anda akan melihat tiga direktori lagi:
target
menyimpan artefak build biner keluaranpkg
menyimpan artefak build WASM perantaradist
menyimpan artefak build terakhir untuk web. Jika Anda tertarik untuk mengekstrak artefak build Stork akhir, Anda dapat mengekstrak file berikut setelah membuat proyek dengan yarn build
:
/target/release/stork
/dist/stork.js
/dist/stork.wasm
just build-indexer
yang akan membuat biner pengindeks ke target/release/stork
just build-js
yang akan membangun biner WASM dan kode penghubung Javascript ke direktori dist
just build-federalist-index
yang akan membuat file indeks federalist.st yang direferensikan di seluruh proyek. Ini akan ditampilkan ke local-dev/test-indexes/federalist.st
.just build-indexer-dev
yang akan membangun biner pengindekscargo run -- <CLI OPTIONS>
akan menjalankan biner pengindeksjust build-dev-site
yang akan membangun kode jembatan WASM dan Javascript, membangun indeks federalist.st, dan mengemas situs pengembangan./scripts/serve.sh
akan melayani situs pengembanganLihatlah Justfile proyek untuk mengetahui lebih banyak skrip yang tersedia.