داکفایند: موتور جستوجوی مایکروسافت که کامل تو مرورگر میچرخه
خلاصهٔ کاملتر
مایکروسافت پروژهٔ متنباز docfind رو منتشر کرده؛ یه موتور جستوجوی سند که با Rust نوشته شده و به WebAssembly کامپایل میشه. تو مستندات پروژه اومده که هدف اصلی، جستوجوی فولتکست سمت کلاینته: ایندکس داخل خود فایل wasm جاسازی میشه و بعد از لود اولیه، هیچ درخواستی به سرور نمیره.
قلب کار ترکیب دوتا ساختار دادهٔ متفاوته. کلیدواژهها تو یه FST (مبدل حالت متناهی) نگهداری میشن که جستوجوی فازی با فاصلهٔ لِوِنشتاین رو تقریباً مجانی میکنه، و متن سندها با FSST فشرده میشه که به گفتهٔ سازندهها ۶۰ تا ۸۰ درصد حجم رو کم میکنه ولی بازگشاییش هنوز سریع میمونه. استخراج کلیدواژه هم با الگوریتم RAKE انجام میشه و به کلمههای متادیتا و عنوان وزن بیشتری از متن بدنه میده.
عددهای دموی رسمی هم گویا هستن: روی ۵۰ هزار خبر از دیتاست AG News، ۱۷.۱۴ مگابایت JSON خام تبدیل میشه به ایندکس ۱۱.۴۸ مگابایتی که با Brotli به ۵.۲ مگابایت میرسه. ساخت ایندکس حدود ۱.۱ ثانیه طول میکشه، لود اولیه حدود ۱۰۰ میلیثانیه و هر جستوجو ۱ تا ۳ میلیثانیه.
استفادهش هم سادهست: یه فایل JSON از سندها (با فیلدهای title، category، href و body) به CLI میدی و خروجی یه ماژول wasm بهعلاوهٔ بایندینگ جاوااسکریپته. بعد تو صفحه فقط همینو صدا میزنی:
import search from 'docfind.js';
const documents = await search('needle');
console.log(documents);خود CLI بهصورت باینری مستقل هم عرضه میشه، پس برای ساختن ایندکس لازم نیست زنجیرهٔ ابزار Rust رو نصب کنی. تو بخش منابع، پروژههایی مثل Lunr.js، Stork و Tinysearch بهعنوان کارهای پیشین معرفی شدن؛ چیزی که docfind رو جدا میکنه اینه که کل ایندکس رو داخل باینری wasm میذاره و ابزار ساختش هم به Rust روی سیستم تو نیازی نداره.
نکات کلیدی:
- موتور جستوجوی متنباز مایکروسافت با Rust و خروجی WebAssembly، بدون نیاز به سرور
- کلیدواژهها با FST و جستوجوی فازی لِوِنشتاین؛ متن سندها با فشردهسازی FSST
- استخراج خودکار کلیدواژه با الگوریتم RAKE و وزندهی به متادیتا و عنوان
- دمو: ۵۰ هزار سند، ایندکس ۱۱.۴۸ مگابایتی (۵.۲ مگابایت با Brotli)، هر کوئری ۱ تا ۳ میلیثانیه
- CLI مستقله، پس برای ساخت ایندکس نصب Rust لازم نیست




