TinySearch هو محرك بحث خفيف الوزن وسريع ونص كامل. وهي مصممة لمواقع الويب الثابتة.
تتم كتابة Tinysearch في الصدأ ، ثم تم تجميعها إلى Webassembly لتشغيل في متصفح.
يمكن استخدامه مع مولدات الموقع الثابتة مثل Jekyll أو Hugo أو Zola أو Cobalt أو Pelican.

يقوم ملف فهرس الاختبار الخاص بمدونتي التي تضم حوالي 40 مشاركة بإنشاء حمولة WASM تبلغ 99 كيلو بايت (49 كيلو بايت Gzipped ، 40 كيلو بايت بروتلي).
هذا أصغر من الصورة التجريبية أعلاه ؛ لذلك نعم.
TinySearch هو منفذ Rust/WASM لرمز Python من المقالة "كتابة محرك بحث كامل النص باستخدام مرشحات Bloom". يمكن اعتباره بديلاً لـ Lunr.JS و SulectionLunr ، والتي هي ثقيلة جدًا بالنسبة لمواقع الويب الأصغر وتحميل الكثير من JavaScript.
تحت غطاء محرك السيارة ، يستخدم مرشح XOR - بنية بيانات لتقريب سريع للعضوية المحددة أصغر من مرشحات Bloom و Cuckoo. يتم تحويل كل منشور مدونة إلى مرشح سيتم بعد ذلك تسلسله إلى نقطة ثنائية باستخدام Bincode. يرجى ملاحظة أن التقنيات الأساسية تخضع للتغيير.
WASM-Pack مطلوب لبناء وحدة WASM. تثبيته مع
cargo install wasm-packلتحسين إخراج JavaScript ، ستحتاج أيضًا إلى terser:
npm install terser -g
إذا كنت ترغب في جعل مجموعة WebAssembly صغيرة قدر الإمكان ، فإننا نوصي بتثبيت ثنائي أيضًا. على MacOS ، يمكنك تثبيته باستخدام Homebrew:
brew install binaryenبدلاً من ذلك ، يمكنك تنزيل الثنائي من صفحة الإصدار أو استخدام مدير حزمة نظام التشغيل الخاص بك.
بعد ذلك ، يمكنك تثبيت TinySearch نفسه:
cargo install tinysearch
ملف JSON ، الذي يحتوي على المحتوى للفهرس ، مطلوب كمدخل. يرجى إلقاء نظرة على ملف المثال.
يعد حقل body في مستند JSON اختياريًا ويمكن تخطيه إلى فهرس العناوين فقط.
بمجرد إنشاء الفهرس ، يمكنك التشغيل
tinysearch fixtures/index.json
سيؤدي ذلك إلى إنشاء وحدة WASM ورمز الغراء JavaScript لدمجها في موقع الويب الخاص بك. يمكنك فتح demo.html من أي خادم ويب لرؤية النتيجة.
على سبيل المثال ، يحتوي Python على خادم ويب مدمج يمكن استخدامه للاختبار السريع:
python3 -m http.server
ثم تصفح إلى http://0.0.0.0:8000/demo.html لتشغيل العرض التوضيحي.
يمكنك أيضًا إلقاء نظرة على أمثلة الكود لمولدات الموقع الثابتة المختلفة هنا.
لخيارات الاستخدام المتقدم ، قم بتشغيل
tinysearch --help
يرجى التحقق من ما هو مطلوب لاستضافة Webassembly في الإنتاج - ستحتاج إلى تعيين أنواع GZIP MIME بشكل صريح.
إذا لم يكن لديك إعداد كامل للصدأ متاح ، فيمكنك أيضًا استخدام صور Docker التي تم إنشاؤها ليلا.
إليك كيفية تجربة 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 : الكتابة فوق مستودع حزمة WASMWASM_BRANCH : الكتابة فوق فرع المستودع للاستخدامTINY_REPO : مستودع الكتابة فوق tinysearchTINY_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 تحت أي من
في خيارك.