از Pista Academy حمایت کنید
خلاصه آموزشی
مرور سریع مفاهیم اصلی پیش از تماشای کامل یا برای جمعبندی بعد از آموزش.
در جلسه 40 آموزش Redis از صفر تا حرفهای، مدرس به بررسی مسائل مرتبط با عملکرد جستجو در Redis میپردازد. با استفاده از یک مجموعه داده فیک، مشکلات موجود در جستجوی متنی بررسی شده است. یکی از مشکلات اصلی، عدم اولویت دادن به عنوان در مقابل دسکریپشن است. همچنین، الگوریتم Tfidf به عنوان روشی برای ارزیابی اهمیت کلمات در جستجو معرفی شده است. در ادامه، روشی برای افزایش وزن کلمات موجود در عنوان پیشنهاد شده است. بهینهسازی الگوریتم سرچ در Redis نیز مورد بحث قرار گرفته است و این موضوع در جلسه بعدی به طور کامل توضیح داده خواهد شد.
نکات کلیدی
مشکل اصلی جستجو در Redis به دلیل عدم اولویت دادن به عنوان در مقابل دسکریپشن است.
الگوریتم Tfidf برای ارزیابی اهمیت کلمات در جستجو معرفی شده است.
روشی برای افزایش وزن کلمات موجود در عنوان پیشنهاد شده است.
بهینهسازی الگوریتم سرچ در Redis در جلسه بعدی به طور کامل توضیح داده خواهد شد.
متن ویدیو
متن زمانبندیشده این جلسه برای مرور، جستجو و دسترسی سریعتر.
سلام عرض میکنم خدمت دوستان عزیز. بریم سراغ ادامه بحثمون توی ردیس و
ببینیم که چطور میشه. خب ما راجع به سرچ
صحبت کردیم. پیادهسازی سرچ رو هم دیدیم.
خب فقط مسئلهای که وجود داره تو اپلیکیشن
ما من اپلیکیشنم یه راه بکنم
اینه که اپلیکیشن ما الان دیتای زیادی نداره و ما
یه سری عملکردا رو نمیتونیم خوب بررسی
بکنیم توی در حقیقت سرچ خب بذارید بیاد
بالا اصلاً همش خیلی دیتا به درد بخوری
نیست میایم یه کار میکنیم توی
در حقیقت این فایلی که شما دارید برای
پروژه آغازین یه قسمتی هست به نام سیت خب
اینجا یه سری دیتای فیک هست زیادم از حجمش
خب اینو ران بکنید ردیستون دیتای قبلیو
کامل پاک میکنه اینو جایگزین میکنه و
این کاملاً میشه سرچو توش قشنگ بررسی کرد
برای اینکه بخواید یه همچین کاری بکنید
اول پروژه رو استا استاپ کنید یه کنترول
سی بزنید دو دفعه بزنید ام پی ام
را سید
خب
این الان اجرا شد بعدش دوباره بیا تو امپ
ام راندف
خروجیشو ببینید
الان کلی دیتای فیک میاد که ما میتونیم قشنگ سرچو بریم توش چک کنیم نیومد
البته اینجا اینجا اومده این سایناپ بکنیم که
خب این پایین اومد این بالاش نیومد حالا اشکال نداره
چی میگه که
یه مشکلاتی داره حالا بعد بریم چک کنیم ببینیم مسئلهش چیه این
مشکل اینجاست کتمد
و اینجا تو یه مشکلی تو این فایلا ما داریم
خب حالا کاری نداره ما میخواستیم دیتا بزنیم که دیتا رو زد حالا اون هیچ
مسئلهای نیست خب بیایم اینجا
بریم توی سرچش یه چیزیو چک کنیم
البته بدم نمیاد این درست کار بکنه بذار
من اینو درستش کنم
خب خب بچهها من این مشکل اینو حل کردم خب
فقط اینکه من کدو بهتون بدم که شما هم دقت
کدو داشته باشید اگه مشکل داشتید مال شما
مشکل نداشته باشه فقط من یه بار دیگه
پروندو بهتون نشون بدم
ام پی ام ران سید
این رفرش میکنید بعد دیتاتون کامل بیاد حالا من لینک ریپازیتوری گیتهاو بهتون بدم
یه لحظه.
خب بچهها از این لینک میتونید تا این
جلسه قبل این جلسه رو فایل پروژه رو
دریافت بکنید و
با همدیگه بریم جلو. خب بریم سراغ سرچ.
داشتم راجع به سرچ صحبت میکردم. الان من
اینجا بچهها
بیام مثلاً بنویسم چیر صندلی چه اتفاقی
میفته؟
هیچ کدوم از اینا صندلی توشون نیست. پس
چرا داره میاره؟ بریم بیکشو باز کنیم.
بهخاطر اینکه کلمه چر توی دسکریپشنش هست.
بچهها یه کنترول اف بزنم
چر ایناش.
پس اینجا ما د تا مشکل داریم یعنی د تا
مسئله داریم. یکی اینکه من توی سرچم داره
میره دسکریپشنم میگرده که ایرادی
ندارهها بگرده. مثلاً یه چیز دیگهست.
مثلاً اینجاست که من میخوام اینجا وقتی
دارم سرچ میکنم اولویتو بده به اونایی که
توی عنوانشون کلمه چر هست بعد دسکریپشنا
رو نشون بده و دو چالش دوممون اونایی که
تو عنوانشون کلمه هست کدومشونو اول نشون
میده کدومو دوم یعنی ترتیب همونا ارم
چهجوری نشون بده پس ما د تا چالش داریم هر
د تا چالش باید بهش فکر کنیم که چهجوری
بتونیم جلوش رو بگیریم
خب بیایم اینجا من یه مثالی بزنم رو مثال بهتون توضیحاتو بدم
خب شما فرض کنید د تا تکست دارید مثلاً یکیش هست مثلاً اینه
اکسلنت
فروت گود
فتاستیک
خب یه تکستتون اینه اینو اسمشو میذارم
استرینگ ی
یکی دیگه اینه استرینگ د
خب فرض کنید شما یه همچین چیز دارید بعد کلمهای که میخواید سرچ بکنید چیه؟
دنبال این کلمه میگردید سؤالی که پیش میاد اینه که اول استرینگ
یکو تو سرچ نشون بده یا استرینگ د رو
ترتیب رو چهجوری
در حقیقت به شما نشون بده طبیعتاً من
دنبال اینم که این دومی رو اول نشون بده
چون این اولویتش بیشتر از اینه این یه
عنوان دو کلمهایه که یکیشون چیزیه که من
دنبالشم پس این اینو باید ببره بالا حالا
چهجوری این کارو میکنه یه الگوریتمی ردیس
داره بهش میگن تیف آیدی اف الگوریتم
خب برای اینکه حالا زیاد درگیر نوشتن نشم دوباره میرم سراغ جبنای خب
وات از
تی اف آیدی اف الگوریتم ش آیدیف
ازمپل مثلا
توی اگزمپل خود ما میخوام اینو چک بکنه. میگم که
تکست وان اینه
تکست دود
سرچ فور ورد
فروت
کلاً نفهمیدم چه پرامپتی دادم ولی احتمالاً بفهم منظورم چیه خب یه ذره خنگم
به شدت توی استفاده از این ابزارا
چی حالا تا این اصلا بذار بیاد رو چیز بگم نمیخوام بنویسم چون خیلی خوب توضیح میده
واقعیت من تو الان جدیداً تو همه ویدیوها
دارم از جمنا یا چت جی بیتی از یکیش
استفاده میکنم برای اینکه واقعاً درگیر
نوشتن نشم خب
حالا ببینیم میگه این الگوریتم ردیس چیه
اول که مخفف چیه ترم فریکونسی اینورس
داکیومنت فریکونسی
مخفف اینه خب این یه جورای معلومه دیگه
یعنی کهه فرکانس اون کلمهای که ما
دنبالشیم چقدر تو اون اس تو این متنه و
اینم حالا یه جورایی برعکسشه احتمالاً
بعد میگه یک آمار عددیه یک کمیت عددیه
استفاده میشه توسط موتورهای جستجو مثل
ردیس
که تشخیص بدند
که ما از این دستور استفاده میکردیم دیگه افتدا سرچ میزدیم یادتون باشه که اینجا
داریمش دیگه یادتون باشه کابینههاش افت
سرچ خب
خب میگه این میخوایم تصمیم بگیریم که
کدومش اول نمایش داده بشه
خب
میگه که این فقط نمیره نگاه بکنه کنه که اون کلمه تو این چند بار تکرار شده اون یه
چیزای دیگه براش مهمه اون
ارتباطه براش مهمه اون اینکه چقدر مرتبطه
با سرچ ما
اول میاد اینو حساب میکنه تیفو اینکه چند
بار اون کلمه توی اون متنه حضور داره خب
هرچی بیشتر بهتر بعد میاد آیدییاف حساب
میکنه
اینکه اون کلمه تو اون متنه چقدر نایابه
یعنی چی نایابه؟ یعنی مثلاً اگه شما هرچی
تعداد کلماتون کمتر باشه در کل و اون کلمه
توش وجود داشته باشه اون مهمتره. مثلاً
گفتم بهتون دیگه من اینجا یه چیز دو
کلمهای دارم. یکیش اون چیزی که دنبالشم
پس این خیلی مهمتره نسبت به این که چه
میدونم ۸ تا کلمهست.
حالا چهجوری این الگورت حساب کتاب میکنه؟
اول میاد تیفو حساب میکنه که بهتون گفتم
دیگه میگرده ببین اون کلمه چند بار تو
داکیومنت اون تکرار شده تقسیم بر تعداد
کلمات
مثلاً تو این میشه ۲ تقسیم بر ۶ چون ۶ تا
کلمهست این میشه ی تقسیم بر د این میشه ۱/
دوم این میشه ۱/ سوم بالایی
برا تیفش حالا آیدی افو چهجور حساب میکنه
لوگاریتم یک به اضافه
تعداد کل داکیومنتها
تقسیم تقسیم بر تعداد کل داکومنتهایی که
شامل اون کلمهی که ما دنبالش میکردیم.
خب بریم حالا تو این مثال خود ما بریم بعد
این د تا عددیو که حساب کرد یعنی تیف و
آیدیفو ضرب در هم میکنه میشه اسکور نهایی
هرچی اسکور بالاتر باشه تو سرچ میاد
بالاتر
ببینیم مثال ما رو حل کرده یا نه ما یه
این تکستو داشتیم یه دونه اینو داشتیم
دنبال کلمه فروتم میگردیم خب
اول بیا تیف حساب کنید تو اولی د بار
تکرار شده ۶ تا هم کلمه داریم تقریباً
میشه انقدر تو دومی یه یه بار تکرار شده
کلاًهم د تا کلمه داریم میشه نی اما
آیدیایف چهجور حساب میشه آیدی اف چند تا
کلاً داکومنت داریم د تا
یه داکومنتمون اینه یه داکومنتمون اینه
کلمه فرود تو هر دو تا داکومنت هست پس
اینم میشه د مخرجمونم میشه د بالایی هم
میشه د لوگاریتمش چقدر میشه میشه ۳ دهم س۳
دهمو ضربدر این کنیم میشه ۹صدم
ضرب در این کنیم میشه ی و نیم درست اس
میگم آره این میشه یهم این میشه ۱۵ کدوم
اسکورش بالاتره پایینی پس اینو میاره
بالاتر از این نشون میده
به همین راحتی حساب کتاب میکنم پس اول
اینو نشون میده بعد میاد اینو نشون میده
خیلی خوبه جمنایی واقعاً منو راحت کرده از
نوشتن این همه متنو و عکس بیا نمیدونم
فلان کن و اینا عالیه خب مخصوصاً نسخه
پولیشو داشته باشید که من الان تو البته
تو اون یه ماه رایگانشم. خب بریم سراغ
کارمون. این میشه الگوریتم مورد استفاده
ردیس توی سرچ. اما این یکی از مشکلات ما
رو حل میکنه. یه مشکل دیگه هم ما داشتیم
اونم این بود که متنو با عنوان یکی در نظر
میگیره. در صورتی که من میخوام عنوان رو
وزن بیشتری بده. پس من یه جوری باید بهش
بفهمونم که اگر داری سرچ میکنی اگر اون
کلمه تو عنوان بود وزن بیشتری بده نسبت به
زمانی که کلمه توی دسکریپشنه. اینو خیلی
ساده میتونیم انجام بدیم فقط کافیه که
اونجا که داریم سرچ میکنیم در حقیقت
چیکار کنیم؟ بیایم
یه وزنی بدیم. میام اینجا اینجا که دارم
سرچ میکنم
یه کووری مینویسم
مساویه
دنبال کلین میگردم تو نیم خب
کانسیدنت خب اما میخوام به این یه ذره وزنشو ببره بالاتر مثلاً چه میدونم ۵
برابر وزن بیشتر بده میام چیکار میکنم
اینجا
میام میگم که
یه وزنی بهش بده ۵ برابر
حالا به جای اینکه کلینو پاس بدم کویرو پاس بدم
پس میگم به عنوان ۵ برابر وزن بیشتر بده حالا بریم یه چک کنیم
چر اونایی رو آورد که کلمه چر تو عنوانشه
درصاری که قبلاً میرفت اونایی که تو
دسکریپشن بودو میآورد بالا بین اینا هم
تقریباً همه شرایط یکسانه اینا همه سه
کلمهایه اول یه کلمهش ۴ پس اینا ترتیبشون
تقریباً یکی هیچ فرقی نمیکنه
خب اینم پس بحث بهینهسازی الگوریتم سرچ
توی ردیس و اینکه داره پشت صحنه چهجوری
این کارو انجام میده بریم بیایم جلسه بعدی
بحثو ادامه میدیم فعلاً خداحافظ ‏S
پرسشهای رایج
پاسخ کوتاه و مستقیم به پرسشهایی که معمولاً هنگام یادگیری این موضوع مطرح میشوند.
در این جلسه مشکل اصلی جستجو در Redis به دلیل عدم اولویت دادن به عنوان در مقابل دسکریپشن مطرح شده است.
الگوریتم Tfidf برای ارزیابی اهمیت کلمات در جستجو معرفی شده است.
روشی برای افزایش وزن کلمات موجود در عنوان پیشنهاد شده است.
آخرین بهروزرسانی محتوای متنی:
آموزش جامع و کاملاً عملی Redis به زبان فارسی؛ از نصب و راهاندازی تا پیادهسازی الگوهای حرفهای. در طول این دوره تمرینمحور، یک اپلیکیشن فروشگاه اینترنتی میسازیم و با مفاهیمی مثل مدلسازی داده، جستجو، همزمانی و ارتباط سرویسها در دنیای واقعی کار میکنیم. در این دوره چه یاد میگیرید؟ راهاندازی Redis بهصورت لوکال و کار با CLI دستورات افزودن و Query گرفتن از دادهها کار با Hashها، Listها، Setها و Sorted Setها (رتبهبندی و امتیازدهی) ایجاد یکتایی داده با Setها + تمرینهای عملی Pipelining برای بهینهسازی کارایی Design Patterns قدرتمند مخصوص Redis و نکات و Gotchaهای مهم تبدیل مدلهای رابطهای به مدل Redis (Data Modeling) HyperLogLog برای شمارش تقریبی توسعه قابلیتها با Scripting مدیریت Concurrency و حل مسائل همزمانی جستجو و فیلتر پیشرفته با RediSearch (Querying & Search in Action) ارتباط بین سرویسها با Streams پیادهسازی و تمرین مستمر روی پروژه E-Commerce مخاطبان برنامهنویسان بکاند و فولاستک، مهندسان داده و هرکسی که میخواهد Redis را بهصورت کاربردی و پروژهمحور یاد بگیرد.