تور لحظه آخری
امروز : جمعه ، 15 تیر 1403    احادیث و روایات:  پیامبر اکرم (ص):سه چيز است كه در هر كس باشد منافق است اگر چه روزه دارد و نماز بخواند و حج و عمر...
سرگرمی سبک زندگی سینما و تلویزیون فرهنگ و هنر پزشکی و سلامت اجتماع و خانواده تصویری دین و اندیشه ورزش اقتصادی سیاسی حوادث علم و فناوری سایتهای دانلود گوناگون شرکت ها

تبلیغات

تبلیغات متنی

اتاق فرار

خرید ووچر پرفکت مانی

تریدینگ ویو

کاشت ابرو

لمینت دندان

ونداد کولر

صرافی ارکی چنج

صرافی rkchange

دانلود سریال سووشون

دانلود فیلم

ناب مووی

رسانه حرف تو - مقایسه و اشتراک تجربه خرید

سرور اختصاصی ایران

تور دبی

دزدگیر منزل

تشریفات روناک

اجاره سند در شیراز

قیمت فنس

armanekasbokar

armanetejarat

صندوق تضمین

پیچ و مهره

طراحی کاتالوگ فوری

دانلود کتاب صوتی

تعمیرات مک بوک

Future Innovate Tech

آموزشگاه آرایشگری مردانه شفیع رسالت

پی جو مشاغل برتر شیراز

قیمت فرش

آموزش کیک پزی در تهران

لوله بازکنی تهران

میز جلو مبلی

هتل 5 ستاره شیراز

آراد برندینگ

رنگ استخری

سایبان ماشین

قالیشویی در تهران

مبل استیل

بهترین وکیل تهران

شرکت حسابداری

نظرسنجی انتخابات 1403

استعداد تحلیلی

کی شاپ

خرید دانه قهوه

دانلود رمان

وکیل کرج

آمپول بیوتین بپانتین

پرس برک

بهترین پکیج کنکور

خرید تیشرت مردانه

خرید نشادر

خرید یخچال خارجی

وکیل تبریز

اجاره سند

وام لوازم خانگی

نتایج انتخابات ریاست جمهوری

خرید سی پی ارزان

خرید ابزار دقیق

بهترین جراح بینی خانم

تاثیر رنگ لباس بر تعاملات انسانی

خرید ریبون

 






آمار وبسایت

 تعداد کل بازدیدها : 1804659253




هواشناسی

نرخ طلا سکه و  ارز

قیمت خودرو

فال حافظ

تعبیر خواب

فال انبیاء

متن قرآن



اضافه به علاقمنديها ارسال اين مطلب به دوستان آرشيو تمام مطالب
archive  refresh

بررسی :الگوریتم های جستجو در بانک اطلاعاتی


واضح آرشیو وب فارسی:سایت ریسک: siavosh108-07-2008, 10:43 PMاین تاپیک واسه کسانی هست که درباره الگوریتم های سرچ در بانک اطلاعاتی کار می کنند . در واقع روش هایی که بتوان نتایج نزدیک به موضوع خواسته شده را به کاربر نشان داد . لطفاً اگر الگورتم بر پایه بانک اطلاعاتی خاصی هست ، نام بانک اطلاعاتی رو هم ذکر کنید و اگر عمومی هست واژه عمومی رو در انتهای پست به کار ببرید .:10: Bracket08-07-2008, 11:35 PMدقیق تر بگو من منظورت از الگوریتم سرچ در بانک اطلاعات متوجه نمیشم میشه یه مثال ساده بزنی . siavosh109-07-2008, 02:50 PMفرض کنید یک بانک اطلاعاتی درست کردید که شامل اطلاعاتی در مورد نرم افزارهای موجود در فروشگاه اینترنتی یک شرکت هست . خوب کاربر میاد و نرم افزار مورد نظرش رو سرچ می کنه .. خوب حالا به عنوان مثال اگر از MySQL به عنوان بانک اطلاعاتی استفاده کرده باشید ، از طریق دستور select میتونید جداول بانک اطلاعاتی تون رو سرچ کنید و اگر فیلدی مطابق با گزینه سرچ شده پیدا شد ، نمایش داده بشه . تا اینجا قضیه چیز مبهمی نداشت . اما مسئله اینجاست که دستور select یک نوع سرچ ابتدایی رو انجام میده و فقط در صورتی که عبارت تایپ شده توسط کاربر دقیقاً مثل اطلاعات فیلد باشه ، اون رو میتونه پیدا کنه . به عنوان مثال کاربری به دنبال نرم افزار 3D studio max هست . این نرم افزار در جداول بانک اطلاعاتی فروشگاه ما هست و ما توسط دستور select می تونیم نتیجه مناسب رو نشون بدیم . یک مشکل دیگه دستور سرچ اینه که کل جدول رو برای پیدا کردن فیلد مناسب سرچ میکنه که در واقع یک کار زاید و وقت گیر هست . البته تو MySQL با index کردن فیلدها تا حدودی این مشکل رو میشه برطرف کرد و دیگه کل جدول مورد وارسی قرار نمیگیره . اما بحث سرچ کردن و نیاز به الگوریتم ها از اینجا به بعد شروع میشه . حالا فرض کنید کاربر دیگه میاد و عبارت 3D stodio max رو سرچ می کنه . دیگه دستور select نمی تونه نتیجه مناسب رو به کاربر نشون بده . با اینکه ما این نرم افزار رو موجود داریم ولی یک مشتری به خاطر عدم توانایی موتور سرچ می پره !! همچنین ممکنه کاربر عبارت 3d studio یا 3d max رو به کار ببره . که باز هم نتیجه ای نخواهد گرفت . تازه اگر از سرور لینوکس استفاده کنید حتی اگر کاربر عبارت 3d studio max رو هم وارد کنه باز هم به نتیجه نمیرسه چون لینوکس به حروف کوچک و بزرگ حساسه (3D یا 3d ) در واقع الگوریتم سرچ راه حل ها یا کلک هایی هستند که قابلیت نمایش نتایج مشابه رو هم به موتور سرچ اضافه میکنند . البته این مثال در مورد یک بانک اطلاعاتی کوچیک بود و در بانک های اطلاعاتی متوسط یا بزرگ این موضوع خیلی مهم تر و مشکل تر میشه . مثلا در یک موتور سرچ بزرگ با میلیاردها صفحه این موضوع بحث زندگی و مرگه چون باید موتور سرچ به قدری باهوش باشه که با دریافت چند کلمه از کاربر بتونه نزدیک ترین و بهترین نتایج رو نشون بده . برای درک اهمیت این موضوع کافیه همین رو بدونید که کمپانی گوگل فقط به خاطر استفاده از همین الگوریتم هاست که میلیاردها دلار درآمد سالانه داره و از پر سود ترین شرکت های آمریکا ست و سالانه افراد زیادی برای تولید الگوریتم های جدید و بهتر در گوگل کار میکنند و گوگل رو شاید بتونیم مترادف یا الگوریتم های سرچ بدونیم . ولی بحث ما بیشتر مربوط به همین الگوریتم های نسبتاً ساده هست که قابل استفاده در بانک های اطلاعاتی کوچک و متوسط (مثل MySQL) باشه. siavosh109-07-2008, 04:59 PMخوب برای مثالی که زدم یک الگوریتم طراحی میکنیم . ابتدا طرح کلی مسئله --> تطبیق اطلاعات ورودی کاربر با عبارت موجود در بانک اطلاعاتی یا شبیه ترین عبارات به آن عبارت مو جود در بانک اطلاعاتی --> 3D studio max عبارت ورودی توسط کاربر --> یکی از چند حالت زیر : 1 - 3D studio max 2 - 3D stodio max 3 - 3D max 4 - 3d studio max و ... راه حل --> 1 - خوب در مورد اول که مشکل خاصی نیست و در MySQL با دستور زیر می توان عبارت را پیدا کرد . ( فرض شد جدولی داریم که در آن یک ستون به نام software وجود دارد). ; select * from tablename where software =3D studio max 2 - در این مورد دیگه روش بالا کارایی نداره . خوب یک راه حل که من خودم پیشنهاد میکنم . میتونیم وقتی عبارت رو از کاربر میگیریم اونو در یک متغیر به نام A ذخیره کنیم . در php داریم : !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! حالا میتونیم توسط تابع split ، عبارت ورودی رو تجزیه کنیم . به این ترتیب که عبارت ورودی به 3 کلمه 3D , stodio و max تجزیه میشه و درون آرایه ای به نام AS قرار میگیره : !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! حالا برای راحتی کار مقدار هر عنصر آرایه رو توی یک متغیر جدید میریزیم : !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! حالا عبارت ورودی رو به کلمات تشکیل دهندش تجزیه کردیم . یک فرض می کنیم ، اینکه کابر یک یا دو تا از کلمه های تشکیل دهنده عبارت رو اشتباه تایپ کرده باشد ولی حداقل یک کلمه درست داریم . (اگر هر 3 کلمه اشتباه تایپی و املایی داشته باشند به الگوریتم هوشمند تری نیاز هست ) . به ازای هر کلمه یک درخواست به بانک اطلاعاتی فرستاده و نتیجه را در یک متغیر ثبت می کنیم تا به کاربر نشان دهیم . !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! این قطعه کد برای هر دو کلمه دیگر نیز تکرار میشود .البته میتوان این قطعه کد را به صورت یک تابع نوشت تا در کدنویسی صرفه جویی کرد و یا ابتدا تقاضا ها را به بانک اطلاعاتی فرستاد و همه نتایج را در انتها نمایش داد که این برمیگرده به برنامه نویس و خوش سلیقگی :46: خوب درمورد کلمه اول مسلماً حداقل یک نتیجه مناسب پیدا خواهد شد و درمورد کلمه دوم نتیجه ای نخواهیم داشت و در مورد کلمه سوم هم نتیجه ای خواهیم داشت . بدین ترتیب در صورت اشتباه تایپی نیز میتوانیم نزدیک ترین جواب ها را به مشتری بدهیم و این یعنی هوشمندی!! 3 - برای این حالت هم روش بالا کاربرد دارد و ما را به جواب میرساند . البته میتوانیم از تجزیه عبارت صرف نظر کرده و در فقط دستور sql را به شکل زیر تغییر دهیم : !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! باز هم به نتیجه دلخواه میرسیم . البته قطعه برنامه قبل چون کلی تر هست بهتر هم هست . چون این رو باید بدونیم که ما در عمل از عبارت ورودی کاربر هیچ اطلاعی نداریم و طبق احتمالاتی که در نظر می گیریم اون رو به بهترین جواب نزدیک می کنیم . بنابراین راه حل هایی بهترند ک دامنه زیادی از حالت ها رو در نظر داشته باشند و نه تنها یک حالت رو . 4 - در حالت چهار وقتی مشکل پیش میاد که سیستم عامل یا بانک اطلاعاتی به حروف کوچک و بزرگ حساس باشند مثل سیستم عامل لینوکس . راه حل پیشنهادی من اینه که وقتی ورودی از کاربر دریافت میشه بعد از تجزیه کردن عبارت به کلمات تشکیل دهنده و قرار دادن در ارایه AS بیایم و هر عنصر آرایه رو در 2 حالت بررسی کنیم : حالت اول : مقدار عنصر را به همان گونه که هست در بانک اطلاعاتی سرچ میکنیم . حالت دوم : بعد از اعمال تابع strtoupper بر روی عنصر و تبدیل کردن کلیه حروف کلمه به حروف بزرگ ، متغیر حاصل رو در بانک اطلاعاتی سرچ میکنیم . چون اینجا آرایه ای داریم که 3 عنصر دارد ( 3 کلمه تشکیل دهنده عبارت) و هر عنصر را در دو حالت بررسی کردیم ، در نهایت 6 پاسخ از بانک اطلاعاتی دریافت خواهیم کرد که یکی از آنها نتیجه درست هست .( کلمه 3d با تبدیل به حروف بزرگ به 3D تبدیل شده و طبق دستور select که در بالا گفته شد به نتیجه خواهیم رسید.) البته در این مورد باز هم برنامه گفته شده در قسمت 2 کاملتر و بهتر هست . ---------------- در کل در بالا یک قطعه برنامه استفاده شد که اندکی به هوشمندی موتور سرچ اضافه کرده و دیدیم که هیچ قائده خاصی در میون نیست و روش یک روش ابتکاریه . همونطور که من واسه حل کردن یه سری مشکلات فرضی یک سری راه حل گفتم . در واقع هر الگوریتمی رو میشه ارائه داد ولی موقعی یک الگوریتم خوب هست که با کد نویسی کمتر و سرعت بیشتر ما رو به جواب برسونه. مخوام با ابتکارات دوستان یک مجموعه الگوریتم واسه این کار جمع کنیم که هر کس روزی نیاز بهش پیدا کرد از اونا استفده کنه یا در صورت نیاز با ترکیب اونها به جواب مطلوب برسه . در واقع با مشکلات و زوایای این کار آشنا بشه siavosh110-07-2008, 01:40 PMکسی الگوریتم جدیدی ، پیشنهادی انتقادی نداره ؟؟ بیاید این جور تاپیک ها رو بیشتر کنیم فکر کنم به هممون کمک میتونه بکنه سایت ما را در گوگل محبوب کنید با کلیک روی دکمه ای که در سمت چپ این منو با عنوان +1 قرار داده شده شما به این سایت مهر تأیید میزنید و به دوستانتان در صفحه جستجوی گوگل دیدن این سایت را پیشنهاد میکنید که این امر خود باعث افزایش رتبه سایت در گوگل میشود




این صفحه را در گوگل محبوب کنید

[ارسال شده از: سایت ریسک]
[مشاهده در: www.ri3k.eu]
[تعداد بازديد از اين مطلب: 899]

bt

اضافه شدن مطلب/حذف مطلب




-


گوناگون

پربازدیدترینها
طراحی وب>


صفحه اول | تمام مطالب | RSS | ارتباط با ما
1390© تمامی حقوق این سایت متعلق به سایت واضح می باشد.
این سایت در ستاد ساماندهی وزارت فرهنگ و ارشاد اسلامی ثبت شده است و پیرو قوانین جمهوری اسلامی ایران می باشد. لطفا در صورت برخورد با مطالب و صفحات خلاف قوانین در سایت آن را به ما اطلاع دهید
پایگاه خبری واضح کاری از شرکت طراحی سایت اینتن