سلام دوستان

تو یکی از قسمت‌های رادیو‌گیک تو وبلاگ جادی (کیبورد آزاد) یه تبلیغ جانانه برای fastdic.com کرده بود علتش هم که خیلی روش تاکید داشت سرعت خیلی بالای اون بود.

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

برای این کار سه چیز نیازه

۱) دیتابیس: حدود سال ۱۳۸۴ یک دیتابیس دیکشنری پیدا کردم که یه گوشه‌ی هارد تا الان نگهداری کرده بودمش و الان می‌خوام از همون استفاده کنم. یک فایل متنی ۵۹۴۹۹ سطری به این شکل

text-dictionary

پس ما ابتدا لغت انگلیسی رو داریم بعد فاصله::فاصله بعد لغت فارسی حالا تا اینجا رو داشته باشید که باهاش کار داریم

۲) باید دیتابیسی رو برای اینکار طراحی کنیم جدولی که برای اینکار در نظر گرفتم ۳ فیلد داره (من یک عادتی دارم و همیشه یک فیلد id توی جدول قرار می دم هرچند حتی اگه به اون نیاز نباشه)

فیلدها شامل:

id از نوع integer

english از نوع varchar که طولش ۲۵۵ حرف هست

persian از نوع varchar که طولش ۱۰۲۴ حرف هست (طولانی‌ترین معنی که پیدا کردم ۷۴۴ کاراکتری بود)

خوب اینجا می‌خوام چندتا فوت کوزه گری بگم

فوت کوزه‌گری ۱

ایندکس‌گذاری جداول در زمان SELECT زدن تاثیرگذارترین موضوع در سرعت Queryها هست!

persian هم که بیشتر حرف داره fulltext می‌کنیم تا بتونیم روش fulltext search کنیم

با توجه به اینکه فیلد english کمتر از ۲۵۶ حرف داره اون رو index می کنیم برای اینکه کیفیت جستجو را بالا ببریم فیلد english  را fulltext کردم.

برای کلید اصلی (primary key) هم id v رو انتخاب می‌کنیم مطابق تصویر زیر (روی عکس کلیک کنید تا سایز اصلی رو ببینید)

db-dictionary

خوب جدول آمادست حالا ادامه مرحله یک رو جلو می‌بریم

یه متن بلند بالا داریم که باید تبدیل شه به INSERT در نزدیک به ۶۰۰۰۰ QUERY منطقا ما بیکار نیستیم (و البته از حوصله هم خارجه) که دستی اینکار رو انجام بدیم

یک راه اینه که از Excel استفاده کنیم از tabs->data->from text که توش delimiter (یا همون جدا کننده) را : قرار می دیم و ادامه ماجرا (یک وقت دیگه آموزش می‌دمش)

من دوست دارم از یک روش گیکی‌تر و قابل استفاده در تمام سیستم‌عامل‌ها استفاده کنم؛ برای اینکار نیاز به vim داریم که تقریبا برای تمام (بله درست شنیدید تمام) سیستم‌عامل‌های موجود نسخه داره (…,Windows, Linux, Mac, OS/2, Amiga, Android, i/Os) می تونید از اینجا دانلودش کنید. این برنامه خیلی جالبه تقریبا تمام زبان‌های برنامه‌نویسی رو پشتیبانی می‌کنه Open Source(بخونید آزاد) هست؛ تحت shell (ویندوزی‌ها بخونن DOS)هست؛ می‌تون فایل‌های گیگابایتی رو مثل آب خوردن بازکنه و روشون پردازش‌های سنگین انجام بده؛ خیلی جذاب و دوست داشتنیه و امکاناتش بینهایت! خوب بهتره دست از تعریف و تمجید بردارم و کار رو شروع کنیم

خوب حالا که vim رو دانلود کردین دیکشنری لغات رو هم دانلود کنید.

من دیکشنری و فایل gvim74.exe رو توی درایو 😀 قرار دادم برای باز کردن دیکشنری اول باید dos یا shell رو باز کنید

D:
gvim74.exe fa-en-utf8.txt

 

شکل دیکشنر ما به ازای هر سطر بصورت زیر هست

english Word :: ترجمه فارسی

 و ما می خواهیم اون رو تبدیل کنیم به

INSERT INTO dictionary VALUES (NULL, "english word","ترجمه فارسی");

برای اینکار کافیه توی VI دستورات زیر را بنویسیم  برای نوشتن دستور در VI ابتدا باید : بزنید تا بخش دستور فعال شه در واقع منظور از : در ابتدای خط همین هست (اگه همین دستورات رو copy/paste کنید خودش می‌فهمه که دستوره )

:%s!^!INSERT INTO dictionary VALUES (NULL, '!g
:%s! :: !','!g
:%s!$!');!g
:wq

خوب حالا این دستورات یعنی چه

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

در خط اول s% یعنی به ازای تمام یافته‌ها به جای ^ که نشان دهنده ابتدای سطر است ($ هم نشان دهنده انتهای سطره 😉 ) دست INSERT را قرار بده و g هم یعنی replace کن به عبارتی ما یه find and replace ساختیم.

در خط دوم می گیم هر جا :: دیدی بجاش ‘,’ بگذار

و در خط سوم هم می گیم پایان هر خط ;(‘ بگذار تا دستور ما بسته بشه

و در نهایت wq: یعنی ذخیره کن و خارج شو!

{ادامه دارد}

درباره‌ی این وبلاگ

در این بلاگ نگاه من را درباره دنیای فناوری و برنامه نویسی خواهید دید. امیدوارم مطالب آن راهگشا باشد.

تصاویر