Wednesday, June 06, 2007

گوگل

چند وقتی هست که سرم خیلی شلوغ هست، خیلی شلوغ تر از آنکه وقت کنم چیزی بنویسم. هفته ای 10 روز کار دارم! برای همین هم چند وقتی هست که هیچ پستی نداشته ام. بعضی از دوستان هم فرموده بودند خیلی طولانی می نویسی، سعی می کنم این بار کوتاه تر بنویسم.

نمی دانم چقدر گوگل را می شناسید و نمی دانم آیا تا بحال اسامی سرگی برین و لارنس پیج به گوشتان خورده یا نه. همین قدر بگویم که این دو نفر موسسین گوگل بوده اند. یکی از نکات جالب در مورد گوگل این است که ساختار داخلی آن تا حد زیادی برای دنیا ناشناخته است. به نظر می رسد صاحبان این غول اینترنتی خیلی دلشان نمی خواهد رقبا از کارشان سر در بیاورند. ولی در هر حال برخی از مقالاتی که در مورد گوگل منتشر شده نکات جالبی را در مورد آن به ما یاد می دهد. یکی از معدود مقالاتی که در مورد ساختار داخلی گوگل منتشر شده مقاله ای است با عنوان The Anatomy of a Large-Scale Hypertextual Web Search Engine. فکر می کنم این مقاله سال 1998 یا 1999 بوده که منتشر شده(این مقاله ای که در دست من است تاریخ انتشار ندارد ولی از متن آن می توان این تاریخ را حدس زد). توی دنیای کامپیوتر این مقاله یکی از مقالاتی هست که citation خیلی بالایی دارد(نشان از اهمیت و اعتبار این مقاله دارد). یکی از زیباترین و هوشمندانه ترین مواردی که در این مقاله می توانید یاد بگیرید الگوریتم رتبه دهی صفحات (Page Ranking) در گوگل هست. الگوریتم رتبه بندی در موتورهای جستجو از چند جهت اهمیت دارد. یا بهتر بگویم باید چند ویژگی را داشته باشد.

اول اینکه صفحات را به شکل درستی مرتب کند. ممکن است کلمه ای را در گوگل جستجو کنید که در چند میلیون صفحه موجود باشد. گوگل باید از بین این چند میلیون صفحه، صفحاتی را که ارتباط بیشتری با عبارت جستجوی شما دارند را در ابتدا بیاورد، وگرنه جستجو کردن در گوگل نمی تواند برای شما فایده چندانی داشته باشد!(تصور کنید اگر گوگل نتایج جستجو را به شکل درستی مرتب نمی کرد بعد از هر بار جستجو باید بین چند هزار تا چند میلیون صفحه جستجو می کردید تا صفحه مورد نظرتان را پیدا کنید).

ویژگی دوم که شاید از ویژگی اول هم مهمتر باشد این است که الگوریتم رتبه بندی صفحات باید به شکلی باشد که نتوان به راحتی و با تغییر محتوای*** صفحات بر روی آن تاثیر زیادی گذاشت. این نکته را در نظر بگیرید که برای خیلی از شرکت ها این نکته اهمیت زیادی دارد که هنگام جستجوی عبارات خاصی سایت آن شرکت در صفحه اول جستجوی گوگل قرار بگیرد. مثلا یک شرکت فروشنده لپ تاپ خیلی علاقه دارد وقتی کلمه لپ تاپ توی گوگل جستجو می شود سایت آن ها هم در صفحه اول لیست شود. خیلی از شرکت ها حاظر هستند سالانه میلیون ها دلار خرج کنند تا چنین اتفاقی بیافتد، حتی رشته ای با عنوان Search Engine Optimization یا SEO در همین راستا شکل گرفته است. حالا به این مطلب فکر کنید که اگر الگوریتم رتبه بندی در گوگل و موتور های جستجوی دیگر طوری بود که به آسانی می شد آن را تحت تاثیر قرار داد، چه اتفاقی می افتاد. هر کلمه ای را که توی گوگل جستجو می کردید، چند صفحه چرت و پرت که بیشتر آنها سایت شرکت ها بود برای شما برگردانده می شد!

یکی از نکات جالب دیگر این است که الگوریتم رتبه بندی صفحات در گوگل طوری هست که اگر n صفحه توی گوگل ایندکس شود، برای بدست آوردن رتبه هر صفحه باید یک n معادله n مجهول حل شود، و به این نکته هم توجه کنید که این n حداقل چیزی حدود 6 یا 7 میلیارد هست!

البته الگوریتم Page Ranking فعلی گوگل ترکیبی از چند الگوریتم هست که تقریبا سرّی هستند ولی یکی از مهمترین آنها همین الگوریتمی هست که در این مقاله توضیح داده شده.

راستش را بخواهید می خواستم به چند چیز دیگر هم اشاره بکنم ولی مثل اینکه دوباره دارم زیاد می نویسم. برای همین هم بقیه مطالب را می گذارم برای دفعه ی بعد.

پانویس:

*** این را هم بگویم برای اینکه کمی بخندید، چند روز پیش یکی از دوستان می گفت در رسم الخط جدید فرهنگستان گفته اند به جای "محتوی" بنویسید "محتوا"، خیلی خوشحال شدم چون من تا کلاس سوم راهنمایی محتوی را می خواندم mahtooy.