صفحه 6 از 6 اولاول ... 456
نمایش نتایج 201 تا 203 از 203

نام تاپیک: فراخوان ایجاد یک موتور جستجوی داخلی

  1. #201
    منتظر تایید آدرس ایمیل
    تاریخ عضویت
    اسفند 1393
    پست
    85

    نقل قول: فراخوان ایجاد یک موتور جستجوی داخلی

    sourceweb عزیز ، من این رو تو اون یکی تاپیکتون هم گفتم،فک کردم اینجاهم اشاره کنم بهتره ، پیشنهاد میکنم شما و دوستان علاقه مند دیگه اگر منابع مالی ندارید با -سیّد- ارتباط حاصل کنید ، وارد کار بشید و اگه شده حتی به صورت رایگان کار کنید و تجربه کنید ، بعد اینکه کمی تجربه کردید و یاد گرفتید خواستید می تونید خودتون کار متفاوتی رو شروع بکنید ، با آرزوی موفقیت برا همه دوستان

  2. #202

    نقل قول: فراخوان ایجاد یک موتور جستجوی داخلی

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

    اما در آخرین باری که کد میزدم تعداد صفحاتی که ایندکس شده بود توسط خزنده ای ک نوشته بودم 13 ملیون صفحه بود که جستجو بین اونها زیر نیم ثانیه انجام میشد یعنی حدودا خوب بود
    اما هرچی فکر کردم با خودم فایده ای نداره چون تنهایی به جایی نخواهد رسید این پروژه و حد اقل باید 2 نفر برای هر بخش فعالیت کنن بخش هایی مثل ایندکس مثل کرالر رابط کاربری سناریو سازی و...

    موفق باشید

  3. #203
    کاربر دائمی آواتار -سیّد-
    تاریخ عضویت
    فروردین 1393
    محل زندگی
    تهران
    پست
    233

    نقل قول: فراخوان ایجاد یک موتور جستجوی داخلی

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

    اما در آخرین باری که کد میزدم تعداد صفحاتی که ایندکس شده بود توسط خزنده ای ک نوشته بودم 13 ملیون صفحه بود که جستجو بین اونها زیر نیم ثانیه انجام میشد یعنی حدودا خوب بود
    اما هرچی فکر کردم با خودم فایده ای نداره چون تنهایی به جایی نخواهد رسید این پروژه و حد اقل باید 2 نفر برای هر بخش فعالیت کنن بخش هایی مثل ایندکس مثل کرالر رابط کاربری سناریو سازی و...

    موفق باشید
    خیلی ممنون از این که اومدید و توضیح دادید.
    خوب حالا دوستان می‌تونن یه تخمین حدودی از ابعاد موتور جستجو داشته باشن.
    البته من توی این پست یه توضیح کلی داده بودم:
    https://barnamenevis.org/showthread.p...=1#post2199579
    نقل قول نوشته شده توسط -سیّد- مشاهده تاپیک
    اگه بخواین یه کار خیلی ساده بکنین انقد درگیر نمی‌شین. کافیه با اصول اولیه‌ی HTTP آشنا باشید تا بتونید یه خزشگر ساده بنویسید (یا از یه نمونه‌ی آماده‌اش استفاده کنید و تغییرش بدید). بعد هم صفحات رو توی یه پایگاه داده‌ی ساده ذخیره کنید و از FTS استفاده کنید تا بتونید جستجو کنید. یه UI ساده هم با زبونی مثل PHP می‌زنید و تمام.
    اما حالا می‌خواین یه مرحله جلوتر برین و نتایج جستجو رو بهبود بدین. بنابراین درگیر مباحث IR می‌شین. مجبور می‌شین برین در این زمینه مطالعه کنین. خیلی گسترده هست! دهها Paper در زمینه‌های مختلف IR وجود داره که تازه خیلیهاشون توی موتور کاربردی نیستن چون سرعتشون پایینه! مثلاً طرف می‌گه این حرکتو بزن، کیفیت نتایج ۱۰ درصد بهتر می‌شه! فقط مشکلش اینه که هر جستجوتون ۱ دقیقه طول می‌کشه!!!!
    بعد می‌خواین بازم جلوتر برین و صفحات خراب رو بتونین درست تشخیص بدین. وارد بحث parse کردن صفحات می‌شین. باید با تکنولوژی HTML به صورت کامل آشنا بشین تا بتونین همه‌ی سوراخ سنبه‌هاش رو پیدا کنین! بعدش هم باید برین سراغ HTML5 و بعد از اون فهمیدن جاوا اسکریپت و AJAX.
    بعد می‌خواین جلوتر برین و سایت‌هایی که بعضی وقت‌ها مشکل دارن رو بتونین تشخیص بدین (مثلاً یهو یه سایت بهتون connection نمی‌ده). باید با مباحث شبکه آشنا بشین و مثلاً در مورد Socket timeout و مباحث TCP و HTTP و غیره مطالعه‌ی دقیقی بکنید.
    بعد می‌خواین جلوتر برین و پوشش موتورتون رو گسترده‌تر کنین. پس باید خزشگر رو یه جوری طراحی کنین که بتونه صفحات زیادی رو جمع‌آوری کنه. درگیر مسائل توزیع‌شدگی می‌شین و باید برین درباره‌ی پایگاه‌های داده‌ی توزیع شده مطالعه کنید. بعد درباره‌ی distributed computing مطالعه کنید. بعد خزشگرتون رو طوری طراحی کنید که بتونه توی چند صد میلیون صفحه اولویت‌بندی کنه و صفحات مهم‌تر رو سریعتر بیاره. بعد هم بریم سراغ بحث update! باید بتونین توی چند صد میلیون صفحه مشخص کنین که کدومها با چه rate ای به‌روزرسانی بشن.
    بعد درگیر این می‌شید که حالا این update ها رو چطوری توی index اعمال کنید؟ احتمالاً می‌رید به سراغ روش batch. یعنی اول توی یه index دیگه اینها رو اعمال می‌کنید، بعد جای دو تا index رو با هم عوض می‌کنید.
    همین وسط می‌بینید خودتون همه‌ی این کارا رو نمی‌تونید با هم انجام بدید، پس می‌رید سراغ استخدام نیرو. اون هم انواع نیرو: شبکه، برنامه‌نویس، نیروی research، توی همه‌ی بخش‌ها!
    همزمان با این موضوع، باید پهنای باند رو هم به صورت متناسب افزایش بدید. پولش رو هم باید بدید!
    بعد سر این موضوع درگیر مباحث شبکه‌ای و زیرساختی می‌شین، چون تعداد سرورها داره می‌ره بالا. بعد یه دفعه می‌بینید دیگه پول ندارید سرور بخرید!!!
    بعد یهو می‌بینید اون یه دونه ادمین شبکه‌ای که استخدام کرده بودید و خوشحال بودید، زیر بار چندین سرور و کلاستر و غیره داره منفجر می‌شه! پس مجبور می‌شید نیروی جدید استخدام کنید! حالا بیا و نیروی جدید رو آموزش بده!
    حالا همه‌ی این مشکلات رو حل کردید، یهو می‌بینید این همه صفحه که خزش کردید، دیگه با یه Index ساده روی ستون متناظرش توی پایگاه داده جواب نمی‌ده! جستجوها سرعتشون کندتر و کندتر می‌شه! مجبور می‌شین برین سراغ یه Index توزیع شده. روز از نو، روزی از نو! همه‌ی قصه‌هایی که بالاتر گفتم دوبل می‌شه!!!
    تازه این رو هم توجه داشته باشید یه پایگاه داده‌ی توزیع شده، خیلی ساده‌تر از یه index توزیع شده هست. توی پایگاه داده می‌خواین lookup کنین و مثلاً یه دونه از سطرها (یا یه range از سطرها) رو استخراج کنید، ولی توی هر جستجو، باید به بخش وسیعی از صفحات موجود توی index تون دسترسی پیدا کنید و با query کاربر match کنید، بعد از match هم باید score کنید تا بتونید بهترین صفحات رو پیدا کنید.
    بعد می‌خواین باز جلوتر برین و سرعت جستجو رو بالا ببرین (زیر ثانیه) و همچنین بتونین چندین جستجوی همزمان رو جواب بدید. ساده‌ترین راهش افزایش سخت‌افزاره! ولی پول می‌خواد! بنابراین سعی می‌کنید حتی‌الامکان نرم‌افزارتون رو بهینه‌سازی کنید. پس وارد مباحث بهینه‌سازی می‌شید. هم بهینه‌سازی کد، هم بهینه‌سازی شبکه.
    بعد می‌خواین stability موتور رو بالا ببرید. مجبور می‌شید بعضی جاها سیستم‌های زپرتی‌ای که از روی جبر (به خاطر کمبود زمان و دانش و نیرو) استفاده کردید رو با یه سیستم درست و حسابی جایگزین کنید. بعد هم مجبور می‌شین برای همه‌ی سیستم‌هاتون یه سیستم backup بذارین تا در صورت پایین اومدنش بتونین روی backup سوئیچ کنید. بعد باید یه مقدار پیشرفته‌ترش کنید و این switch کردن روی backup رو خودکار کنید. بعد یهو می‌بینید کلی سرور جدید لازم دارید که سیستم‌ها همگی HA باشن! بعد گریه می‌کنید!! :)
    بعد می‌خواین یه کاری کنید که هیچ وقت موتور پایین نیاد و همیشه پاسخگو باشه. برای همین نمی‌تونید تغییرات رو (مثلاً تغییر توی الگوریتم رتبه‌بندی) روی خوشه‌ی index اصلی اعمال کنید و تست کنید! چون ممکنه نتایج خراب بشه! پس باید یه خوشه مخصوص تست‌های مختلف داشته باشید! اینجا باز هم گریه می‌کنید!!
    بعد می‌خواین توان پاسخگویی موتور رو بالا ببرید تا مثلاً توی peak وقتی ۱۰ تا کاربر با هم جستجو می‌کنن کم نیاره و به همگی زیر ثانیه جواب بده. در نتیجه باز هم باید بهینه‌سازی کنید، یا سخت‌افزار اضافه کنید!
    بعد کم کم درگیر مباحث امنیت می‌شید. جدا از این که بعضی از کاربران شروع می‌کنن به اذیت کردن، از اون طرف صفحاتی که خزش می‌شن، بعضیاشون مشکل دارن!
    بعد می‌خواین یه کم به کاربر حال بدین، می‌رین سراغ auto-complete. بعد یهو می‌بینید سیستم نمی‌کشه! بعد که یه جوری مشکل سرعت رو حل می‌کنید، می‌بینید کیفیت عبارت‌های auto-complete شده پایینه!
    بعد می‌خواین از cache استفاده کنید تا سرعت بالا بره. بعد یهو توی این مسئله می‌مونید که چطوری این cache رو می‌خواین update کنید؟ توجه کنید که این cache شامل یه داده‌ی مشخص نیست که به راحتی بشه update اش کرد، بلکه شامل نتیجه‌ی یه جستجو هست که ممکنه بعد از مثلاً چند دقیقه، با خزش شدن یه صفحه‌ی جدید، این صفحه در صورت انجام جستجوی جدید بیاد و بشه جزو نتایج اون جستجو. یا یکی از نتایج اون جستجو update بشه و مثلاً پاک بشه، یا کلاً دیتاش عوض بشه (مثلاً صفحه‌ی اول یه سایت خبری که تند و تند عوض می‌شه)، پس باید توی نتایج شما هم عوض بشه. اینا هر کدوم برای خودشون داستانی داره!
    بعد هم به این فکر می‌کنید که چقدر خوب بود اگه index به جای این که batch باشه، realtime باشه و به محض این که خزشگر یه صفحه رو گرفت، سریع توی index به‌روزرسانی بشه. برای همین شروع می‌کنید به طراحی سیستم به صورت realtime، یه دفعه می‌بینید کللللللللللللللاً همه چی زیر و رو می‌شه! برای همین یا بی‌خیال می‌شید، یا بسم‌الله می‌گید و وارد گود می‌شید! البته معلوم نیست کی از گود بیاین بیرون! :)
    بعد دیگه به صورت دائم درگیر مسئله‌ی بهبود کیفیت هستید که هیچ وقت تموم نمی‌شه! درگیر مسائل مختلفی می‌شید:

    • Query Expansion
    • Query Correction و Spell Suggestion
    • افزودن پارامترهای جدید به الگوریتم رتبه‌بندی (توجه کنید که اگه یه پارامتر جدیدی بخواین از چند صد میلیون صفحه استخراج کنید و توی index اعمال کنید، کار راحتی نیست!)
    • ایجاد انواع تغییر توی الگوریتم رتبه‌بندی
    • افزودن قابلیت learn شدن موتور از روی جستجوها و کلیک‌های کاربران
    • اجرای الگوریتم‌هایی مانند Page Rank روی صدها میلیون صفحه و اعمالشون توی سیستم
    • ...



    خوب اینجاس که یه نگاه می‌کنید، می‌بینید کار راحتی نیست! می‌شه راحت و کوچیک شروع کرد، ولی بزرگ کردنش کار سختیه. نگرفتم نمی‌شه، خیلی سخته، و خیلی هم هزینه داره.
    این که دوستمون می‌گه ۱۳ میلیون صفحه رو زیر نیم‌ثانیه جواب می‌ده، باید چند تا نکته رو در نظر داشته باشید:
    یکی این که چند تا کاربر می‌تونن به صورت همزمان با این سیستم کار کنن و زیر نیم ثانیه (یا زیر ثانیه) جواب بگیرن؟
    دوم این که کیفیت نتایج چطور بود؟ اگه یه مقدار بخواین مباحث پیشرفته‌تر IR رو درگیر کار کنین، مطمئن باشین سرعت پایین‌تر میاد.
    سوم این که سیستم شما توزیع‌شده نیست. باید ببینید با چه تکنولوژی‌ای می‌خواین به صورت توزیع‌شده درش بیارین و در نتیجه اینجا دوباره ممکنه سرعت پایین بیاد (یا مسائل دیگه نظیر مشکلات stability پیش بیاد).

    در نهایت باز هم ممنونم که برگشتید و قضیه رو روشن کردید.

صفحه 6 از 6 اولاول ... 456

تاپیک های مشابه

  1. ایجاد جستجو برای سایت شبیه موتور جستجوی گوگل
    نوشته شده توسط morteza_mokhtari در بخش ASP.NET Web Forms
    پاسخ: 1
    آخرین پست: دوشنبه 02 دی 1392, 22:50 عصر
  2. سوال: موتور جستجوی داخلی سایت
    نوشته شده توسط mehcosoft در بخش PHP
    پاسخ: 4
    آخرین پست: شنبه 06 مهر 1392, 15:10 عصر
  3. فراخوان:ایجاد راهنمای آغاز به کار با لینوکس::
    نوشته شده توسط hosseinzadeh در بخش توسعه‌ی لینوکس و نرم افزارهای آزاد
    پاسخ: 2
    آخرین پست: دوشنبه 18 خرداد 1383, 15:18 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •