Tinysearch เป็นเครื่องมือค้นหาที่มีน้ำหนักเบาเร็วและเต็มรูปแบบ มันถูกออกแบบมาสำหรับเว็บไซต์คงที่
Tinysearch เขียนด้วย Rust จากนั้นรวบรวมไปยัง WebAssembly เพื่อทำงานในเบราว์เซอร์
มันสามารถใช้ร่วมกับเครื่องกำเนิดไฟฟ้าแบบคงที่เช่น Jekyll, Hugo, Zola, Cobalt หรือ Pelican

ไฟล์ดัชนีทดสอบของบล็อกของฉันที่มีประมาณ 40 โพสต์สร้างน้ำหนักบรรทุก WASM ที่ 99KB (49KB GZIPPED, 40KB Brotli)
นั่นเล็กกว่าภาพสาธิตด้านบน ใช่
Tinysearch เป็นพอร์ต Rust/Wasm ของรหัส Python จากบทความ "การเขียนเครื่องมือค้นหาแบบเต็มข้อความโดยใช้ตัวกรอง Bloom" มันสามารถมองเห็นได้ว่าเป็นทางเลือกแทน Lunr.js และ Elasticlunr ซึ่งหนักเกินไปสำหรับเว็บไซต์ขนาดเล็กและโหลดจาวาสคริปต์จำนวนมาก
ภายใต้ฮูดจะใช้ตัวกรอง XOR - โครงสร้างข้อมูลสำหรับการประมาณอย่างรวดเร็วของการเป็นสมาชิกชุดที่มีขนาดเล็กกว่าตัวกรอง Bloom และ Cuckoo โพสต์บล็อกแต่ละรายการจะถูกแปลงเป็นตัวกรองที่จะถูกทำให้เป็นอนุกรมเป็น binary blob โดยใช้ Bincode โปรดทราบว่าเทคโนโลยีพื้นฐานอาจมีการเปลี่ยนแปลง
ต้องใช้ WASM-Pack เพื่อสร้างโมดูล WASM ติดตั้งด้วย
cargo install wasm-packในการเพิ่มประสิทธิภาพเอาต์พุต JavaScript คุณจะต้องใช้ TERSER:
npm install terser -g
หากคุณต้องการทำให้ webAssembly เล็กที่สุดเท่าที่จะเป็นไปได้เราขอแนะนำให้ติดตั้ง Binaryen เช่นกัน บน macOS คุณสามารถติดตั้งด้วย homebrew:
brew install binaryenหรือคุณสามารถดาวน์โหลดไบนารีจากหน้ารีลีสหรือใช้ OS Package Manager ของคุณ
หลังจากนั้นคุณสามารถติดตั้ง Tinysearch เอง:
cargo install tinysearch
ไฟล์ JSON ซึ่งมีเนื้อหาเป็นดัชนีจำเป็นต้องเป็นอินพุต โปรดดูไฟล์ตัวอย่าง
ฟิลด์ body ในเอกสาร JSON เป็นทางเลือกและสามารถข้ามไปยัง Just INDEX POST ชื่อ
เมื่อคุณสร้างดัชนีคุณสามารถเรียกใช้
tinysearch fixtures/index.json
สิ่งนี้จะสร้างโมดูล WASM และรหัสกาว JavaScript เพื่อรวมเข้ากับเว็บไซต์ของคุณ คุณสามารถเปิด demo.html จากเว็บเซิร์ฟเวอร์ใด ๆ เพื่อดูผลลัพธ์
ตัวอย่างเช่น Python มีเว็บเซิร์ฟเวอร์ในตัวที่สามารถใช้สำหรับการทดสอบอย่างรวดเร็ว:
python3 -m http.server
จากนั้นเรียกดู http://0.0.0.0:8000/demo.html เพื่อเรียกใช้การสาธิต
นอกจากนี้คุณยังสามารถดูตัวอย่างรหัสสำหรับเครื่องกำเนิดไซต์คงที่ที่แตกต่างกันได้ที่นี่
สำหรับตัวเลือกการใช้งานขั้นสูง Run
tinysearch --help
โปรดตรวจสอบสิ่งที่จำเป็นในการโฮสต์ WebAssembly ในการผลิต - คุณจะต้องตั้งค่าประเภท MIME GZIP อย่างชัดเจน
หากคุณไม่มีการตั้งค่าสนิมเต็มรูปแบบคุณสามารถใช้ภาพนักเทียบท่าที่สร้างขึ้นทุกคืนของเรา
นี่คือวิธีการลอง Tinysearch กับ 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.jsonโดยค่าเริ่มต้นจะใช้ภาพสนิมอัลไพน์ที่เสถียรล่าสุด เพื่อรับทุกคืน
docker build --build-arg RUST_IMAGE=rustlang/rust:nightly-alpine -t tinysearch/cli:nightly .WASM_REPO : เขียนทับที่เก็บ WASM-PUCKWASM_BRANCH : เขียนทับสาขาที่เก็บเพื่อใช้TINY_REPO : เขียนทับที่เก็บของ TINYSEARCTINY_BRANCH : เขียนทับ TINYSEARCH สาขา ในการรวม Tinysearch ในท่อส่งต่ออย่างต่อเนื่องจะมีการดำเนินการของ GitHub
- name : Build tinysearch
uses : leonhfr/tinysearch-action@v1
with :
index : public/index.json
output_dir : public/wasm
output_types : |
wasm เว็บไซต์ต่อไปนี้ใช้ TinySearch:
คุณใช้ TinySearch ด้วยหรือไม่? เพิ่มเว็บไซต์ของคุณที่นี่!
Tinysearch ได้รับใบอนุญาตภายใต้
ตามตัวเลือกของคุณ