فهرست مستندات پروژه
انتخاب پروفایل و پردازش فعل
یکسانسازی، بنیابی، واژهنامه و پردازش فعل را متناسب با جستجوی خود تنظیم کنید.
برای پردازش قاعدهمحور بدون وارد کردن واژهنامه، از standard شروع کنید. وقتی به فهرست واژههای محافظتشده، جمعهای مکسر شناختهشده و نگاشتهای بیشتر واژه و فعل نیاز دارید، full را انتخاب کنید.
import { createAnalyzer } from "fa-search-kit";
import { lexicon } from "fa-search-kit/lexicon";
const light = createAnalyzer({ profile: "light" });
const standard = createAnalyzer();
const full = createAnalyzer({ profile: "full", lexicon, verbs: "lemma" });
const stem = createAnalyzer({ profile: "full", lexicon, verbs: "stem" });
console.log(JSON.stringify(light.analyze("کتابها", { mode: "query" }))); // => ["کتابها"]
console.log(JSON.stringify(standard.analyze("کتابها", { mode: "query" }))); // => ["کتاب"]
console.log(JSON.stringify(full.analyze("میشود شد نمیکند", { mode: "query" }))); // => ["شد","شد","نکرد"]
console.log(JSON.stringify(stem.analyze("میشود شد نمیکند", { mode: "query" }))); // => ["شود","شد","نمیکن"]
console.log(JSON.stringify(full.analyze("کتب", { mode: "query" }))); // => ["کتاب"]
هر پروفایل چه کاری انجام میدهد؟
light متن را یکسان و توکنسازی میکند، بخشهای صرفی جداشده شناختهشده را وصل میکند و نیمفاصله را از عبارت نهایی برمیدارد. بنیابی و واژهنامه ندارد. با تنظیمات پیشفرض، در حالت نمایه شکل بدون کلاه آ و بخشهای جداشده با نیمفاصله را هم اضافه میکند؛ بنابراین فقط فراخوانی normalize() نیست.
standard بنیاب فارسی Snowball و قواعد تکمیلی را اضافه میکند: رسیدگی به پسوندهای مشخص پس از نیمفاصله، می چسبیده با بررسی استثناها، برخی ضمیرهای پیوسته و حفظ پسوندهای اشتقاقی. به واژهنامه نیاز ندارد.
full به وارد کردن صریح lexicon نیاز دارد؛ بدون آن ساخت تحلیلگر خطا میدهد. واژههای محافظتشده، جمعهای مکسر شناختهشده، اصلاح صورت پایه، فعلهای شناختهشده و حذف گستردهتر ضمیرهای پیوسته را اضافه میکند. واژهنامه محدود است و پردازش بافت جمله را در نظر نمیگیرد. دادن lexicon به createAnalyzer() بهتنهایی full را فعال نمیکند؛ profile: "full" را هم بنویسید. رابطهای موتور با دریافت واژهنامه، full را انتخاب میکنند مگر اینکه پروفایل دیگری را صریح تعیین کنید.
تفاوت lemma و stem
در پروفایل full با verbs: "lemma"، صورتهای صرفی شناختهشده به عبارتی بر پایه بن ماضی میرسند؛ برای نمونه «میشود» و «شد» هر دو «شد» میشوند. این انتخاب تطبیق میان زمانهای مختلف فعل را بیشتر میکند، اما ممکن است تمایزهای موثر در رتبهبندی را کاهش دهد. این قابلیت استخراج صورت پایه دستوری از هر متن دلخواه نیست.
با verbs: "stem"، مراجعه به نگاشت صورت پایه فعل غیرفعال میشود، ولی فهرستهای دیگر full و قواعد ضمیر پیوسته فعال میمانند. خروجی برای جستجو است و لزوما واژه فرهنگ لغت نیست. مقدار پیشفرض نفی keep است؛ merge ممکن است صورت مثبت و منفی را یکی کند و باید روی محتوای شما ارزیابی شود.
در فراخوانی مستقیم createAnalyzer()، اگر full انتخاب شده باشد رفتار پیشفرض lemma است. رابطهای Pagefind، FlexSearch و MiniSearch با AND از lemma استفاده میکنند؛ Orama، Lunr و MiniSearch با OR از stem. اگر analyzer آماده بدهید، این پیشفرضهای رابط کنار گذاشته میشوند.
گزینهها و پیامدها
پیشفرضهای تحلیلگر rejoin: true، zwnj: "both"، alefMadda: true و hamzaYeh: true هستند. مقدار spellings در standard و full برابر true و در light برابر false است. گزینه zwnj: "keep" افزودن بخشهای ترکیب به نمایه را متوقف میکند؛ نیمفاصله را در عبارت نهایی نگه نمیدارد. غیرفعال کردن شکلهای جایگزین دامنه تطبیق را محدود میکند و ممکن است تطبیق نادرست را کم کند.
پیشفرضهای بنیابی تحلیلگر closedSplit: true، joinedMi: "rule"، negation: "keep" و derivational: "keep" هستند. standard ضمیر پیوسته پس از نیمفاصله یا پسوند جمع را میپذیرد؛ full علاوه بر آن joinedMin: 3 و singleMin: 3 دارد. شیء clitics که خودتان میدهید، جایگزین کل این شیء میشود و فیلدهایش با پیشفرضها ادغام نمیشوند.
گزینههای سطح پایین و محدودیت فعلی joinedMi: "lexicon" در مرجع هسته آمدهاند. با تغییر هر تنظیم موثر بر عبارتها یا واژهنامه، نمایه را دوباره بسازید.