A L i Rezvanian
A L i Rezvanian
خواندن ۶ دقیقه·۷ سال پیش

از: علی رضوانیان - به: رضا امیرخانی

به نام خدا


از: علی رضوانیان

به: رضا امیرخانی


سلام آقای امیرخانی عزیز

در ابتدا تبریک میگم چاپ کتاب جدیدتون و استقبال خیلی خوب خوانندگان رو و امیدوارم هم شما و هم سایر نویسندگان دغدغه‌مند کشورمون همیشه موفق باشید و با خلق آثاری ناب در راستای افزایش سرانه مطالعه قدم بردارید.

-------

اولین باری که اسم رضا امیرخانی رو شندیم، فکر کنم سال 87 یا 88 بود. یکی از دوستانم از کتاب ناصر ارمنی شما برام تعریف کرد. هم در مورد کتاب و هم نویسنده‌اش که بچه باحالیه!

کتاب رو خریدم و خوندم. خیلی باحال بود. کلی با داستان‌ها و ماجراهاش حال کردم. مدتی بعد رفتم سراغ ارمیا. اینم مثل قبلی عالی بود. نوع ادبیات و طرز نوشتن و امضاهای فراوانی که نویسنده توی نوشته‌هاش از خودش به جا میذاره، هم متن رو جذاب می‌کنه و هم نشون میده با فرد باهوش و خلاقی طرف هستیم که علاوه بر هوش بالا ذهن شلوغی هم داره :)

کتاب های من او، از به و بیوتن کتاب‌های بعدی بود که ازش خوندم و چند کتاب دیگه‌اش رو تهیه کردم و به زودی تموم شون میکنم.


اما دلیل این نامه چیِ؟

جواب به این سوال یکمی نیاز به توضحیات فنی داره. پس یکمی با من پیش بیاید لطفا :)


دیتابیس (database یا DB) چیست؟

دیتابیس یا پایگاه داده محلی‌ست برای ذخیره‌سازی داده‌های دیجیتال. داده‌هایی که می‌تونن متنی باشن یا عددی. تصویر باشن یا فایل صوتی یا هر چیز دیگه‌ای.

A database is a collection of information that is organized so that it can be easily accessed, managed and updated.

قبل‌ترها یک کامپیوتر فقط وظیفه محاسبه رو داشت و بحث جمع‌آوری و نگهداری داده خیلی مهم نبود. اما به مرور ارزش داده‌ها بالا رفت و ثبت این داده‌ها برای دسترسی‌های بعدی مهم شد. برای همین دی‌بی‌ها (دیتابیس‌ها) شکل گرفتن. طی چندین سال این دی‌بی‌ها تکامل پیدا کردن و هر روز به سرعت و قابلیت هاشون اضافه شد.

تا جایی این ماجرا ادامه پیدا کرد که ما امروزه تقریبا هیچ سایتی رو نمی‌بینیم که دی‌بی نداشته باشه. از سایت‌های خبری که اخبار و آمار بازدید رو در دیتابیس‌ها ذخیره میکنن تا سازمان‌ها برای نگهداری اطلاعات کارکنان و فرم‌های اداری و همچنین فروشگاه‌ها که محصولات و نقد و بررسی و آمار فروش و ... رو در خودشون جای میدن.


جستجوی سریع، یکی از مهمترین قابلیت های دیتابیس:

بعد از ذخیره کردن داده‌ها در دی‌بی، نیاز به بازیابی این داده‌ها هم احساس میشه. یکی از وظایف دی‌بی‌ها امکان جستجو روی داده‌هاست. طوری که هر روز دی‌بی‌مَن‌ها(Database Manager) برای پاسخگویی دقیق و سریع‌تر باید دی‌بی رو مثل یک ماشین مسابقه tune کنن!

Database Tuning is the activity of making a database application run more quickly. “More quickly” usually means higher throughput, though it may mean lower response time for time-critical applications.

دو روش مهم و مرسوم برای جستجوی در داده‌های متنی:

همونطور که بالاتر گفتم بعد از ذخیره‌سازی داده‌ها در دی‌بی، نیاز هست بتونیم با سرعت قابل قبول در اونها جستجو کنیم. چرا قابل قبول؟ چون با اضافه شدن حجم داده‌های یک دی‌بی، جستجو در اون، کار زمانبری خواهد شد و باید از روش‌های مختلف، سرعت بازیابی و رسیدن به داده‌های ذخیره شده رو بهبود داد.

مثلا فرض کنید شما در یک پایگاه‌داده (دی‌بی) جدولی داشته باشید که نام و مشخصات ۱۰۰۰۰۰ کتاب در اون ذخیره شده.

جدول محصولات در دی‌بی
جدول محصولات در دی‌بی


حالا میخوایم روی این ۱۰۰۰۰۰ رکورد جستجو انجام بدیم.

برای جستجو در دی‌بی دو روش مرسوم وجود دارد. جستجو به صورت Like و به صورت FullText.

در روش Like عین عبارت جستجو شده باید در یکی از فیلدها وجود داشته باشد. مثلا با جستجوی عبارات “قیدار”، “رضا امیر”، “امیرخانی”، “فرزند زاده ابراهیم” و “مدارای با مردمان” یکی از رکوردهای بازگشتی کتاب قیدار خواهد بود.

این روش همانند جستجوی Find در نرم افزار Microsoft word است. در این روش عباراتی مانند “رضا خانی” نتیجه ای نخواهد داشت. چون عین عبارت در هیچکدام از رکوردها وجود ندارد.

این روش علاوه بر ایراد ذکر شده، در پایگاه‌داده‌های با حجم بالا نیز کلا جواب گو نیست.

اما در روش دوم یعنی FullText Search تک تک کلمات (بین هر دو space یک کلمه است) موجود در رکوردها، در جایی از دی‌بی فهرست می‌شود و اشاره‌گری به رکورد موردنظر ایجاد می‌شود تا هنگامی که کاربر کلمه‌ای را جستجو می‌کند آن کلمات با سرعت بالا بازیابی می‌شوند:

fulltext index
fulltext index

همانطور که در جدول بالا می‌بینید، تمام کلمات به کار رفته در رکوردها استخراج و با یک اشاره‌گر مشخص می‌شود که هر کلمه در کدام رکوردها وجود دارد. این روش جستجو بسیار کارامدتر از روش قبلی‌ست و سرعت بالاتری نیز دارد.

اما نکته اینجاست که فقط کلماتی که بیشتر از ۴ حرف دارند در این جدول نگهداری می‌شود و اگر شما برای مثال کلمه “علی” را جستجو کنید، نتیجه ای در بر نخواهد داشت. البته عدد ۴، به صورت پیش‌فرض است و DBA یا مدیر پایگاه‌داده می‌تواند آن را کمتر یا بیشتر کند. همانطور که مشخص است، با کمتر قرار دادن آن، دی‌بی بار بیشتری را متحمل می‌شود و باعث کندی آن می‌گردد.

دلیل ۴ بودن مقدار پیش‌فرض این است که در زبان انگلیسی بیشتر کلمات ۳ حرفی اصطلاحا نویز وُرد (Noise Word) تلقی می‌شوند و نتیجه جستجو را کمی نامعتبر می‌کنند. مانند The, all, are, has, had و ....

To prevent a full-text index from becoming bloated, MySql has a mechanism that discards commonly occurring words that do not help the search.

اما در فارسی کلمات زیادی وجود دارد که ۳ حرفی و دارای معنی هستند و باید در جستجو شرکت داده شوند. مثل: خدا، علی، حسن، جشن، عزا، کیک و ....

برای همین باید تنظیماتی در دی‌بی انجام شود تا این کلمات نیز index شوند.


اما ماجرا به همین‌جا ختم نمی‌شود.

بزرگواری به نام آقای امیرخانی، کتاب‌هایی دارند که کلا در فارسی Nosie Word محسوب می‌شود!

من او از به

دوستان ما در یکی از فروشگاه‌های اینترنتی مدام به تیم برنامه‌نویس ایراد می‌گرفتند که چرا وقتی اسم برخی از کتاب ها رو جستجو می‌کنیم نتیجه‌ای نداره! البته در ۹۰ درصد اوقات اسم همین دو کتاب آقای امیرخانی به عنوان کتاب‌های مشکل‌دار مطرح می‌شد!


البته ما به عنوان تیم فنی این سایت و با دردسرهای فراوان و قبول اینکه بسیاری از این Noise Word ها را در نتیجه جستجو اضافه کنیم، تنظیمات FullText را به ۲ تغییر دادیم. این مساله تا حد زیادی سرعت جستجو را کُند کرد (گاهی تا ۱۰ برابر) اما باز با ترفندهایی این مساله را نیز برطرف کردیم.


کتاب جدید آقای امیرخانی!

از این اتفاق چند ماهی گذشت! تا اینکه چند روز پیش در یکی از خبرگزاری ها و شبکه‌های اجتماعی، صف طولانی دوستاران کتاب را دیدم. صفی که جوانانی برای خرید کتاب جدید آقای امیرخانی صف کشیده اند!

صف خرید کتاب جدید آقای رضا امیرخانی
صف خرید کتاب جدید آقای رضا امیرخانی


اول از همه خوشحال و هیجان زده بودم که ما در ایران به جایی رسیده‌ایم که برای خرید کتاب ساعت‌ها در صف می‌ایستیم.

به سراغ سایت رفتم تا این کتاب رو پیدا کنم.

اولین کتابی که دیدم همین کتاب جدید بود! اما با دیدن نام آن برق از سرم پرید!

.

.

.

.

.

.

.

.

ر ه ش

آه خدای من....

چرا؟!

آخر این چه نامی‌ست برای کتاب...

چرا یک حرفی؟!

دیگر ما نویز ورد را هم رد داده‌ایم!

.....

آقای امیرخانی عزیز

حالا اینکه ما باید ساختار دی‌بی رو کلا تغییر بدیم به کنار. به جای مای‌اس‌کیو‌ال بریم سراغ الستیک‌سرچ، اشکالی نداره. میریم. اما من نگران اسم بعدی کتاب شما هستم. خواهشا برای کتاب آینده اسمی انتخاب بکنید که نوشته بشه حتی اگر خونده نمیشه :)

......

در آخر از آقای ارشاد تقاضا دارم علاوه بر بررسی محتوای کتاب‌ها، به اسم کتاب‌ها هم توجه بیشتری کنن.


خرید آنلاین کتاب ر ه ش از پاتوق کتاب فردا

کتابرضاامیرخانی
شاید از این پست‌ها خوشتان بیاید