PDA

View Full Version : سوال: الگوریتم جستجوی سریع در بانک داده بزرگ



omid40
جمعه 02 اسفند 1387, 13:53 عصر
با سلام
یه سوال درباره جستجو در بانک اطلاعاتی دارم
فرض کنید ما یک ملیون صفحه داریم که هر کدوم حدود هزار کلمه دارند و میخواهیم با دادن
ترکیب متوالی لغات یک صفحه که به احتمال زیاد فقط در یک صفحه خاص بیشتر وجود ندارد
به موتور جستجو بدیم و ظرف نیم ثانیه نتیجه سرچ صفحه مورد نظر را نشان دهد
این کار در گوگل انجام میشود مثلا یک جمله بلند را از یک وبلاگ متروکه توش کپی کنید بلافاصله
وبلاگ رو کت بسته تحویل میده و مطمینا زمان زیادی هم روش صرف نمیکنه.
اما تو اینترنت دنبال جوابم میگردم چه فارسی یا انگلیسی همش به ایندکسینگ اشاره میکنند و درست نمیگند
مرتب کردن بانک داده بزرگ با تمام این جایگشت لغات که محاله
ببینید من از یک الگوریتم سری گوگل مثل page ranking صحبت نمیکنم من فقط ساختار بانک اطلاعاتی ای
رو میخوام که این عملیات مخوف جستجو توش امکان پذیر باشه این یک چیز مرسومه و در برنامه های مختلفی
هم مثل google desktop , microsoft desktop search , و کلا در پایگاه داده با قابلیت جستجو متن
full text search باید وجود داشته باشه.
ممنون میشم راهنمایی کنید کجا دنبال این الگوریتم بگردم ترجیحا انگلیسی چون فارسی ها عمدتا داستان تاریخ از
پیداش ادم رو مینوسند تا به نحوه کار موتور گوگل برسند پنچر شدند.!!!!
در ضمن کتاب های پایگاه داده و ذخیره بازیابی رو که سریع دیدم به عقلم نرسید چه طوری با درخت دودویی و
مرتب کردن الفبایی میشه اینقدر سریع هر ترکیب دلخواهی رو جستجو کرد.

به حر حال ممنوم میشم کمکم کنید کجا این الگورینم رو جستجو کنم و یا تحت چه عنوانی search کنم و کلا
الگوریتم جستجو سریع در بانک داده خیلی بزرگ تو چه مقوله ای قرار میگیره.

متشکرم.
:خجالت::کف:

omid40
جمعه 02 اسفند 1387, 23:02 عصر
قکر کنم در مبحث
full text indexing
قرار داشته باشه
مایکروسافت گفته تو sql از این قضیه استفاده میکنه

tooraj_azizi_1035
دوشنبه 26 مهر 1389, 11:42 صبح
سلام،
فکر می کنم تمام تلاش این الگوریتم ها بالا بردن ضریب استفاده از CPU ها برای اجرای موازی وکاهش تعداد مقایسه ها و همچنین بالا بردن ضریب هوشمند بودن مقایسه ها هست. مثلاً اگه یه رشته بلند رو جستجو می کنیم در صورتی که اون رو به بازه هایی کوچک برای اجرای مقایسه به شکل موازی تقسیم کنیم سرعت بالا می ره. همچنین برای اینکه مورد اختلاف رو پیدا کنیم می تونیم یه کاراکتر از آخر و یه کاراکتر از اول انتخاب کنیم تا احتمال مغایر بودن رو افزایش بدیم.