موتورهای جستجو (search engines) ابزارهایی هستند که به طور خاص برای نیازمندیهای پیچیدهی کاربران در حوزهی جستجو طراحی شدهاند. در این بین مواردی هستند که به آنها online search engine یا موتور جستجوی آنلاین گفته میشود که به طور خاص روی محتوای وب و فعالیتهای آنلاین تمرکز داشته و دادهی ورودی آنها محتواهایی است که افراد مختلف در بستر شبکه ی اینترنت منتشر میکنند.
به یقین آشناترین نام در موتورهای جستجو آنلاین یعنی گوگل را به خوبی میشناسید. البته که موتورهای جستجوی دیگری نیز در بازار فعالیت دارند اما کاربردیترین ابزار که عموم مردم جهان از قابلیت آن استفاده میکنند، همین موتور جستجوی گوگل است. هنگامی که کاربر عبارتی را برای جستجو در search box وارد میکند، عبارت وارد شده تبدیل به یک درخواست (query) برای آن موتور جستجو میشود و کلمات کلیدی (keyword) آن عبارت شناسایی میشوند. سپس طبق الگوریتم خاص آن موتور جستجو، فرایند یافتن دادههای مرتبط با آن کلمات کلیدی آغاز میشود و در نهایت مواردی که بیشترین ارتباط (relevancy) و کیفیت (quality) را با کلمات کلیدی عبارت جستجو شده داشته باشند، به ترتیب از بیشترین امتیاز به کاربر نمایش داده میشود.
روش کار موتورهای جستجو
فرایند کار موتورهای جستجو شامل 3 مرحلهی اساسی است:
جمعآوری داده
این مرحله در موتورهای جستجوی آنلاین به مرحلهی Crawling معروف است. معنای لغوی crawl خزیدن است و به مرحلهای گفته میشود که طی آن موتورهای جستجو با استفاده از ابزارها یا رباتهایی که در اختیار دارند، شروع به خواندن اطلاعات صفحههای وبسایتهای مختلف کرده و داده های منتشر شده در آنها را جمعآوری میکنند. برخی موتورهای جستجو که به صورت آنلاین کار نمیکنند، در این مرحله به صورت دستی (manually) داده های ورودی آنها تامین میشود.
ثبت داده ها
پس از جمعآوری داده ها، موتور جستجو آنها را دستهبندی کرده و در قالب ساختاری مناسب در پایگاه داده خود ثبت میکند. این مرحله در اصطلاح indexing (شاخصگذاری) نامیده میشود. نکتهی مهم این مرحله این است که صرفا یک کپی از داده ها در پایگاه دادههای موتور جستجو ثبت نمیشود بلکه کلمات کلیدی دادهها مورد بررسی قرار گرفته و برای ثبت شدن در پایگاه داده استخراج میشوند.
رتبهبندی
داده های جمعآوری شده بر اساس فاکتورهای مختلفی مورد تحلیل قرار گرفته و دستهبندی میشوند. در زمان جستجوی یک عبارت، مجموعهای از الگوریتمها استفاده میشود تا امتیازی برای میزان ارتباط هر یک از داده ها با عبارت جستجو شده به دست آید. در نهایت بر مبنای امتیاز به دست آمده نتایج مرتب شده و مرتبطترین آنها به کاربر نمایش داده میشود.
چگونه یک موتور جستجو میتواند کارکرد محصول را بهبود دهد؟
حال که با مراحل اصلی روش کار موتورهای جستجو آشنا شدیم، بهتر است در ادامه بررسی کنیم که چگونه میتوان از قابلیت یک موتور جستجو برای بهبود کارکرد یک محصول استفاده کرد.
فرض کنید شما نرم افزاری طراحی کردهاید که حجم زیادی از اطلاعات و اسناد در موضوعات مختلف در پایگاه دادهی نرم افزار شما وارد شده است و کاربری قصد دارد در بین این حجم از داده ها موارد خاصی را پیدا کند و از اطلاعات آن استفاده کند. سادهترین روش برای برطرف کردن این نیازمندی، استفاده از قابلیت جستجوی ساده در پایگاه داده است. اما جستجوی سادهی یک عبارت در کل یک متن، انعطاف خوبی برای پیدا کردن داده های مرتبط یا مشابه ارائه نمیدهد. برای مثال اگر کاربر به منظور جستجوی اطلاعاتی در مورد تورهای گردشگری به شیراز، به اشتباه و با عجله عبارت " تور گردذشکری سیراز" را وارد کند، در صورت اعمال یک جستجوی ساده چه نتیجه ای برای او نمایش داده میشود؟ شاید هیچ نتیجه ای! و بعد از آنکه نتیجه ی دلخواه دریافت نشد در بهترین حالت شاید با کلافگی عبارت خود را اصلاح و دوباره شروع به نوشتن کند. برای بهبود اولیه در این موارد، میتوان از قابلیت full text search که بیشتر پایگاه داده های رابطه ای از آن پشتیبانی میکنند استفاده کرد. اما زمانی که مقولهی جستجو شکلی پیچیدهتر به خود بگیرد و حجم درخواستهای جستجو افزایش یابد یا نیاز به انعطاف بیشتری در جستجو داشته باشیم، دیگر یک پایگاه دادهی رابطهای نمیتواند کارایی (performance) خوبی برای آن داشته باشد. چراکه وظیفه اصلی یک پایگاه داده رابطهای، ثبت و نگه داری دادههایی با ساختار مشخص است و نه index کردن حجم بالایی از داده ها برای جستجوی سریع و بهینه. در حالی که با استفاده از قابلیتهای تخصصی یک موتور جستجو میتوان نتایج مرتبط با عبارت مورد نظر کاربر را با کارایی و انعطاف بهتری ارائه داده و تجربهی کاربری (user experience) بهتری را نیز رقم بزنیم.
اگر برایتان سوال است که چگونه چنین امکاناتی را میتوان پیاده سازی کرد با ادامهی این دوره همراه ما باشید تا با یکی از قدرتمندتری ابزارهای این حوزه آشنا شوید.