طراحی موتورجستجو در وب

en.mahak

عضو جدید
سلام.من برای پروژه پایانیم احتیاج به کمک دارم.پروژه من در مورد طراحیه موتور جستجوست.این سوال رو داشتم.که چطور میشه سایت دانلود کرد واز اطلاعاتش به عنوان دیتابیس استفاده کرد و طراحیه دیتابیسش چطوریه؟
 

Silverlight

عضو جدید
سلام دوست عزیز
اول بگم من با زبان VB آشنا نیستم و تا به حال هم چنین پروژه ای رو انجام ندادم.اما دیدم که مشکل تون حل نشده گفتم شاید بتونم با راهنمایی هام شما را در مسیر درست قرار بدم. خودتون هم باید همت کنید. ممکن در ادامه نمونه کدهایی هم براتون بزارم که به زبان سی شارپ هست و خودتون باید زحمت تبدیلش رو بکشید که کار زیاد سختی هم نیست سایتهای زیادی هستند که این کار رو انجام می دند.

خوب بریم سر اصل مطلب :
اما در مورد موتور های جستجو اصولش ساده است و پیاده سازیش هم ساده است ولی حجم کد نویسی زیادی دارد.
اولین چیز نیاز بداریم اسکن صفحات وب هست.
شما باید صفحات اینترنت را به صورت متنی دانلود کنید (مثلاً با کلاس System.Net.WebClient) و سپس:

1) این متن html را پردازش کنید و به طرز مناسبی که بعداً جستجوی سریعی داشته باشد، همراه با لینکش در دیتابیس ذخیره کنید.
2) این متن html را پردازش کنید و هایپرلینک ها به صفحات دیگر را پیدا کنید، این هایپرلینک ها هدف بعدی جستجو هستند.
یعنی شما با رفتن به هر صفحه html آدرس چند و شاید چند ده صفحه دیگر را پیدا کنید.

باید مراقب باشید صفحه ای دوبار اسکن نشود و یک حلقه بینهایت در برنامه پیش آید،باید به فکر آپدیت کردن اطلاعات صفحات هم باشید و طبق یک برنامه زمان بندی اطلاعات صفحات را مجدداً در دیتابیس تان refresh کنید.

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

en.mahak

عضو جدید
مرسی از کمکتون.
بله این ها رو میدونم.اما من 2 مشکل اساسی درم.
1.اینکه واقعا روش دانلود اینه./یعنی دانلودش حتما باید با کد باشه؟با نرم افزار webzip میشه ؟
2.فرض منیم من 10 تا سایت رو دانلود کردم اونوقت دیتابیسش چطوره.
من احتیاج دارم بدونم تئوری کار چیه بعد شروع کنم ماشالله تو گوگل هم هیچی پیدا نمیشه
بااین حساب تکلیف من چیه:(
 

Silverlight

عضو جدید
مرسی از کمکتون.
بله این ها رو میدونم.اما من 2 مشکل اساسی درم.
1.اینکه واقعا روش دانلود اینه./یعنی دانلودش حتما باید با کد باشه؟با نرم افزار webzip میشه ؟
2.فرض منیم من 10 تا سایت رو دانلود کردم اونوقت دیتابیسش چطوره.
من احتیاج دارم بدونم تئوری کار چیه بعد شروع کنم ماشالله تو گوگل هم هیچی پیدا نمیشه
بااین حساب تکلیف من چیه:(

lما به اون معنا که شما فکر می کنید یک سایت رو دانلود نمی کنیم . قطعه کد زیر رو در نظر بگیرید به کمک این کد می تونیم محتوای html یک صفحه وب رو بدست بیاریم که به صورت یک رشته برگردونده می شه


کد:
System.Net.WebClient webClient = new System.Net.WebClient();
            webClient.Encoding = System.Text.Encoding.UTF8;
            string strSource = webClient.DownloadString("http://www.google.com");

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

en.mahak

عضو جدید
خب من یه کد vb دارم که متن ها و لینک ها رو جدا میکنه.حالا مونده اندیس گذاری و دیتابیسش.راهنماییم میکنین؟:redface:
 

Silverlight

عضو جدید
خب من یه کد vb دارم که متن ها و لینک ها رو جدا میکنه.حالا مونده اندیس گذاری و دیتابیسش.راهنماییم میکنین؟:redface:

البته من شکل بهینه طراحی دیتابیس برای همچین پروژه ای نمی دونم ولی در ساده ترین شکل خودش شما یه جدول دارید که شامل یه فیلد ID که کلید اصلی هست که می تونی نوعش رو int در نظر بگیری و Identity Specification اون رو yes کنید (همون فیلد Auto Number) تا خود بانک مسئول مقدار دهی اون باشه و یک فیلد به نام link خواهید داشت که می تونی نوعش رو nvarchar در نظر بگیری و در نهایت هم یک فیلد به نام text که نوعش رو می تونی باز nvarchar max) در نظر بگیری که محتوای صفحه مربوط به اون لینک رو نگه داری می کنه در نهایت هم میتونی با یک دستور Select شرطی که در شرطش از دستور like استفاده کردی در محتوای ذخیره شده رشته ای رو جستجو کنی
البته می گم این روش شاید بهینه نباشه ولی من در این حد می تونم شما راهنمایی کنم ;)
 
بالا