Cobalah!
BlogSearch adalah alat blogging yang memungkinkan mesin pencari tanpa layanan eksternal.
Ini seperti DocSearch tetapi untuk blog.
Secara lebih teknis, BlogSearch adalah mesin pencari sisi klien murni, teks lengkap untuk situs web statis, ditenagai oleh SQLite yang dikompilasi untuk WebAssembly.
Pencarian sisi klien murni
Tidak ada server untuk dipelihara. Tidak ada biaya layanan.
Mudah. Ini dibangun untuk blog dan situs web statis dalam pikiran.
Mendukung Kerangka Blog Populer:
Jekyll
Gatsby
Hugo
… Dan situs web statis apa pun!
SQLite-WASM: Jalankan SQLite di web, menggunakan WebAssembly. Proyek ini dibuat untuk kebutuhan BlogSearch.
Alur kerja terdiri dari dua langkah: 1. Anda membuat file indeks | |
1. Bangun file indeks | 2. Aktifkan pencarian |
File indeks
Kemudian Anda menyalin | Halaman web Anda harus memuat mesin penelitian blog. Hanya ada satu mesin yang tersedia:
Muat mesin menggunakan tag <script> atau dalam file JavaScript. Setelah mesin mengambil file |
Sepanjang proyek, istilah "indeks" dan "basis data" sering beragam, tetapi mereka berarti file .db.wasm yang sama di sebagian besar kasus. |
Jekyll (Jekyll-Blogsearch)
Gatsby (gatsby-plugin-blogsearch)
Hugo (BlogSearch-Crawler)
Crawler generik (BlogSearch-Crawler)
Pengguna harus mengkonfigurasi alat pembangunan indeks untuk mengumpulkan nilai bidang untuk bekerja dengan baik mesin pencari.
Alat bangunan indeks harus mengumpulkan bidang default berikut untuk setiap posting:
title : Judul posting.
body : Isi pos.
url : Tautan URL ke posting.
categories : Daftar kategori yang dipisahkan koma , ) yang dimiliki oleh posting tersebut.
tags : daftar tag yang dipisahkan koma , ) yang dimiliki posting.
Pengguna dapat mengonfigurasi setiap bidang menggunakan properti berikut:
| Contoh | Hasil |
|---|---|
| |
{
...other field options...
categories: {
+ disabled: true,
},
} | |
Dalam contoh berikut, ukuran file indeks | |
{
...other field options...
body: {
+ hasContent: false,
},
} | |
| |
{
...other field options...
url: {
+ indexed: false,
},
} | |
Alat bangunan indeks Anda dapat memiliki opsi khusus alat untuk bidang ini (misalnya opsi parser untuk BlogSearch-Crawler). Lihat dokumentasi alat bangunan indeks Anda untuk detailnya. |
< link rel =" stylesheet " href =" https://cdn.jsdelivr.net/npm/[email protected]/dist/basic.css " />
< script src =" https://cdn.jsdelivr.net/npm/[email protected]/dist/blogsearch.umd.js " > </ script >
< script src =" https://cdn.jsdelivr.net/npm/[email protected]/dist/worker.umd.js " > </ script >
< input id =" blogsearch_input_element " type =" search " placeholder =" Search Text " class =" form-control " />
< script >
blogsearch ( {
dbPath : 'your_index_file.db.wasm' ,
inputSelector : '#blogsearch_input_element' ,
} ) ;
</ script >Untuk perincian dan opsi lebih lanjut, buka subdirektori BlogSearch.
Mesin pencari pada dasarnya adalah SQLite dengan ekstensi FTS5, dikompilasi ke WebAssembly. SQLite FTS5 menawarkan algoritma peringkat BM25 bawaan untuk fungsi pencarian. Karena SQLite adalah mesin basis data yang paling portabel, Anda dapat membuka file database SQLite di web juga! Berkat SQLite, kami dapat dengan mudah menulis plugin untuk BlogSearch hanya dengan beberapa pertanyaan SQL dalam berbagai bahasa pemrograman.
.db.wasm direkomendasikan indeks ekstensi file? Ini bukan file biner WebAssembly. Kenapa tidak hanya .db ? Saya mencoba membuatnya .db tetapi ada masalah besar: file indeks tidak dikompresi GZIP oleh server web. Layanan web blog populer (terutama halaman github) biasanya melayani file .db sebagai application/octet-stream dan jangan mengompres file. Dengan berbohong bahwa itu adalah file biner WebAssembly .wasm , server mengenalinya sebagai application/wasm dan mengirimkannya dikompres.
Kompresi penting karena secara signifikan mengurangi ukuran file. Saya melihat ukurannya berkurang hingga 1/3.
Untuk menghindari masalah "tetapi ini berhasil pada mesin saya", sangat disarankan untuk menggunakan Docker untuk membangun tugas.
Meskipun repositori ini adalah monorepo di mana masing -masing subproyek memiliki skrip build sendiri, Anda dapat dengan mudah menjalankan tugas di direktori root.
| Jika Anda ingin membangun subproyject tertentu saja, buka subdirektori dan jalankan perintah benang. |
Alat yang diperlukan adalah sebagai berikut:
GNU Make (v4.2 atau lebih tinggi disarankan, diperingatkan untuk pengguna macOS!)
buruh pelabuhan
Docker-Compose
benang
Meskipun itu adalah JS Project Makefile digunakan karena jauh lebih konfigurasi dan mendukung pembangunan secara paralel.
Untuk versi nodeJS tertentu yang digunakan dalam proyek, silakan lihat Dockerfile.
# Or yarn install, without docker
make install-in-docker # Or yarn install, without docker
make lib-in-dockermake start-in-docker
# You can access the demo page via 0.0.0.0:9000 # Or make test, without docker
make test-in-docker
# Run it in parallel
make test-in-docker -j4 --output-sync=target| Ini akan memakan banyak waktu! (~ 30 mintues) |
# It is highly recommended to use docker here
make examples-in-docker && make demo-in-docker| Ini akan memakan banyak waktu! (~ 30 mintues) |
# Or make all, without docker
make all-in-docker
# Or
# Parallel builds. This reduces the build time almost an half on my machine.
make all-in-docker -j4 --output-sync=targetmake clean
# Then run any commands above make bash-in-dockerProyek ini diilhami oleh DocSearch dan memiliki penerimaan ulang di TypeScript.
Selain itu, proyek ini adalah lisensi MIT. Lihat lisensi