فهرست مستندات پروژه
بارگذاری قابلیتها هنگام نیاز
پردازش اصلی، واژهنامه، اصلاح جستجو و ابزارهای ساخت را در برنامه مرورگر جدا بارگذاری کنید.
فقط رابط مورد نیاز را وارد کنید. خروجی اصلی بسته، رابطها، واژهنامه یا اصلاح جستجو را دوباره صادر نمیکند. برای پنجره جستجوی فارسی میتوانید بارگذاری تحلیلگر کامل را تا زمان باز شدن جستجو عقب بیندازید:
let analyzerPromise;
export function loadPersianAnalyzer() {
return analyzerPromise ??= Promise.all([
import("fa-search-kit"), import("fa-search-kit/lexicon"),
]).then(([{ createAnalyzer }, { lexicon }]) =>
createAnalyzer({ profile: "full", lexicon, verbs: "lemma" })
).catch(error => { analyzerPromise = undefined; throw error; });
}
export async function loadOptionalRescue() {
const [analyzer, { createRescue, fetchWords }] = await Promise.all([
loadPersianAnalyzer(), import("fa-search-kit/rescue"),
]);
return { analyzer, createRescue, fetchWords };
}
تنظیمات را ثابت نگه دارید
هنگام باز شدن یا دریافت تمرکز جستجو، loadPersianAnalyzer() را فراخوانی کنید و همان تحلیلگر را دوباره به کار ببرید. نمونه پس از خطای import امکان تلاش دوباره دارد. تابع loadOptionalRescue() فقط سازندهها را بارگذاری میکند؛ باید اصلاح را با همان تحلیلگر بسازید و متن جمعشده یا واژههای راهدور همراه با بررسی isKnown بدهید. بارگذاری ماژول، اصلاح را خودکار فعال نمیکند.
تا بارگذاری واژهنامه تمام نشده، نمایه full را با standard جستجو نکنید. منتظر تحلیلگر درست بمانید و وضعیت بارگذاری نشان دهید. تغییر تحلیلگر در میانه نشست بدون ساخت دوباره نمایه، رفتار تطبیق را عوض میکند.
بستهبندی و ارائه فایلها
import بدون مسیر به ابزار بستهبندی یا import map درست نیاز دارد. بسته ESM است و sideEffects: false دارد؛ نسخه اسکریپت عمومی فراهم نمیکند. import پویا فقط وقتی خروجی را به چند بخش میشکند که ابزار ساخت شما از این قابلیت پشتیبانی کند. فایل خروجی را بررسی کنید و اندازه ثابتی را فرض نکنید.
برای نامزدهای صفحهکلید بهتنهایی از fa-search-kit/keyboard استفاده کنید. fa-search-kit/analytics را فقط در صورت نیاز به کلید یکسانشده وارد کنید. مسیرهای /pagefind/build و /rescue/build را وارد کد مرورگر نکنید؛ دومی از API فایل، رمزنگاری و gzip در Node استفاده میکند.
تابع fetchWords به API شبکه و باز کردن فشردهسازی مرورگر که در نصب آمده نیاز دارد. promiseهای فهرست و قطعهها ذخیره میشوند و دریافت ناموفق در درخواست بعدی قابل تکرار است. شمارنده bytes بایتهای بدنه پاسخ خواندهشده را میشمارد؛ ممکن است سرور یا مرورگر پیشتر آنها را باز کرده باشد. این مقدار سنجه دقیق کل انتقال شبکه نیست.
اصلاح با محتوای کامل در حافظه به واژههای راهدور نیاز ندارد. اصلاح Pagefind نمایه را بررسی میکند و ممکن است قطعه واژه دریافت کند. این درخواستها میتوانند مستقل از جستجوی معمول شکست بخورند؛ نتیجه قابل استفاده عبارت اصلی را حفظ کنید و راه تلاش دوباره بدهید.