TinySearch adalah mesin pencari teks lengkap yang ringan, cepat, dan lengkap. Ini dirancang untuk situs web statis.
Tinysearch ditulis dalam karat, dan kemudian dikompilasi ke WebAssembly untuk dijalankan di browser.
Ini dapat digunakan bersama dengan generator situs statis seperti Jekyll, Hugo, Zola, Cobalt, atau Pelican.

File indeks uji blog saya dengan sekitar 40 posting membuat muatan WASM 99kB (49kb Gzipped, 40kb Brotli).
Itu lebih kecil dari gambar demo di atas; Jadi ya.
TinySearch adalah port karat/wasm dari kode Python dari artikel "Menulis mesin pencari teks lengkap menggunakan filter mekar". Ini dapat dilihat sebagai alternatif untuk Lunr.js dan Elasticlunr, yang terlalu berat untuk situs web yang lebih kecil dan memuat banyak JavaScript.
Di bawah kap mesin menggunakan filter XOR - struktur data untuk perkiraan cepat keanggotaan yang lebih kecil dari filter Bloom dan Cuckoo. Setiap posting blog dikonversi menjadi filter yang kemudian akan diserialisasi menjadi gumpalan biner menggunakan Bincode. Harap dicatat bahwa teknologi yang mendasarinya dapat berubah.
Wasm-pack diperlukan untuk membangun modul WASM. Instal dengan
cargo install wasm-packUntuk mengoptimalkan output JavaScript, Anda juga akan membutuhkan Terser:
npm install terser -g
Jika Anda ingin membuat WebAssembly sekecil mungkin, kami sarankan untuk menginstal Binaryen juga. Di macOS Anda dapat menginstalnya dengan homebrew:
brew install binaryenAtau, Anda dapat mengunduh biner dari halaman rilis atau menggunakan manajer paket OS Anda.
Setelah itu, Anda dapat menginstal Tinysearch sendiri:
cargo install tinysearch
File JSON, yang berisi konten untuk indeks, diperlukan sebagai input. Silakan lihat file contoh.
Bidang body dalam dokumen JSON adalah opsional dan dapat dilewati hanya untuk mengindeks judul posting.
Setelah Anda membuat indeks, Anda dapat menjalankan
tinysearch fixtures/index.json
Ini akan membuat modul WASM dan kode lem JavaScript untuk mengintegrasikannya ke dalam situs web Anda. Anda dapat membuka demo.html dari server web untuk melihat hasilnya.
Misalnya, Python memiliki server web bawaan yang dapat digunakan untuk tes cepat:
python3 -m http.server
Kemudian telusuri ke http://0.0.0.0:8000/demo.html untuk menjalankan demo.
Anda juga dapat melihat contoh kode untuk generator situs statis yang berbeda di sini.
Untuk opsi penggunaan lanjutan, jalankan
tinysearch --help
Silakan periksa apa yang diperlukan untuk meng -host WebAssembly dalam produksi - Anda perlu secara eksplisit mengatur jenis Mime GZIP.
Jika Anda tidak memiliki pengaturan karat lengkap, Anda juga dapat menggunakan gambar Docker yang dibangun malam kami.
Inilah cara mencoba Tinysearch dengan cepat dengan Docker:
# Download a sample blog index from endler.dev
curl -O https://raw.githubusercontent.com/tinysearch/tinysearch/master/fixtures/index.json
# Create the WASM output
docker run -v $PWD :/app tinysearch/cli --engine-version path= " /engine " --path /app/wasm_output /app/index.jsonSecara default, gambar karat alpine stabil terbaru digunakan. Untuk mendapatkan malam, lari
docker build --build-arg RUST_IMAGE=rustlang/rust:nightly-alpine -t tinysearch/cli:nightly .WASM_REPO : Timpa repositori wasm-packWASM_BRANCH : Timpa cabang repositori untuk digunakanTINY_REPO : Repositori TinysearchTINY_BRANCH : Cabang Tinysearch Timpa Untuk mengintegrasikan Tinysearch dalam pipa penempatan kontinu, tindakan GitHub tersedia.
- name : Build tinysearch
uses : leonhfr/tinysearch-action@v1
with :
index : public/index.json
output_dir : public/wasm
output_types : |
wasm Situs web berikut menggunakan TinySearch:
Apakah Anda menggunakan Tinysearch juga? Tambahkan situs Anda di sini!
Tinysearch dilisensikan di bawah salah satu dari
di pilihan Anda.