Yazan : Şadi Evren ŞEKER
Arama motorlarının tasarımı sırasında kullanılan önemli unsurlardan birisi de internet üzerindeki bağlantıları (link) izleyerek bilgi toplayan ve bütün Internet’i gezip sayfa ve sayfalardaki kelimeleri çıkaran internet örümcekleridir.
Bir örümceğin bünyesinde web sayfalarını indirip bu sayfadaki bağlantıları çıkaran ve daha sonra bu bağlantılara devam eden yapıya web emekleyicisi adı verilir. Bu isim bebeklerin veya sürüngenlerin kullandıkları ve hedefe ulaşmak için yaptıkları bir takım metodolojik işlemden gelmektedir. Benzer şekilde internet üzerinde emekleyen bir örümcek de metdolojik olarak aşağıdaki işlemleri yapmaktadır:
- Bir internet sayfasını indirmek
- Sayfadaki bağlantıları çıkarmak
- Sayfadaki anahtar kelimeleri çıkarmak
- Kelime ve sayfa bilgisini fihristleyiciye (indexer) geçirmek
- Bulduğu bağlantılara devam ederek yukarıdaki adımları bu yeni bağlantılar için de tekrar etmek
Bu işlemler yapılırken bir web emekleyicisi (web crawler) aşağıdaki hususlara göre sınıflandırılabilir:
Derin emekleme (deep crawling): Kabaca sayfanın ne kadar detayını dolaşıp fihristleyeceğimiz. Yani bir web sitesindeki bağlatıları takip edip diğer web sitelerine geçilip geçilmeyeceği.
Çerçeve desteği (Frame Support): sayfalarda bulunan çerçeveleri destekleyip desteklemediğimiz
robots.txt dosyası desteği: web sitelerinin girişinde yer alan bu dosyanın desteklenip desteklenmediği
üst robot etiketi (meta robot tag): web sayfalarının üst bölgesinde (meta tags) yer alan robot etiketinin emekleyici (crawler) tarafından desteklenip desteklenmediği
Tam döküman (full body text): gezilen web sayfasındaki bütün dökümanın mı yoksa bir kısmının mı çıkarılacağı
engellenen kelimeler (stop words): gezilen sayfada bulunan kelimelerden arama için anlamsız olan ve çok yer kaplayan kelimelerin (ve, veya, ile, ise gibi) fihristlenmemesi
Üst tanım (meta description): HTML sayfalarının üst kısmında (meta tags) bulunan tanım bilgilerinin fihristlenip fihristlenmeyeceği
Üst anahtar kelimeler (meta keywords): HTML sayfalarının üst kısmında (meta tags) bulunan anahtar kelimelerin fihristlenip fihristlenmeyeceği
Bazı Emekleyici Kavramları aşağıda açıklanmıştır:
Odaklanmış Emekleyici (Focused Crawling): Belirli bir hedefin aranmasına yönelik olarak geliştirilen emekleme programlarıdır. Örneğin bir masa üstü arama (desktop search) sırasında, belirli bir kelimenin arandığını düşünelim. Emekleyici yazılımımız, aranan kelimeye yönelik olarak dolaşma yapıyorsa ve örneğin belirli dosya türlerini dolaşıyor, dolaşılan verileri fihristlemek (indexing) yerine sadece kelime arama için çalışıyorsa, odaklanmış emekleme (focused crawling) yapıyor denilebilir.
Dağıtık Emekleme (Distributed Crawling): Bir arama işleminin, birden fazla bilgisayara bölünmesi ve dağıtılmış olarak webte dolaşma işleminin gerçekleşmesi durumudur. Genelde aşağıdaki sebeplerle dağıtık emekleme yapılabilir:
- Veri kaynağına olan yakınlık: Örneğin dünya çapındaki internet emeklemesi için coğrafi sebepler ve her veriye her yerden aynı hızda erişilememesi bir sebeptir. Benzer şekilde bir şirkette veri kaynaklarının emeklenmesi (dolaşılması, crawling) sırasında güvenlik sebepleriyle her bilgiye her yerden erişilememesi bir sebep olabilir.
- Depolama ihtiyaçlarının azaltılması: Birden fazla emekleyici bulunması durumunda, her emekleyicinin tutması gereken site ve sitelere bağlı kaynak miktarının azalması söz konusudur. Verimli bir dağıtık emekleme durumunda, emekleyicilerin birbiri ile senkronize olması ve aynı kaynağa birden fazla emekleyicinin erişmemesi önemlidir.
- İşlem yükünün azaltılması: Birden fazla emekleyicinin bulunduğu ortamda, toplam işlem yükünün, birden fazla bilgisayar bölünmesi mümkündür.
Dağıtık emekleme işlemleri sırasında emekleyicilerin birbiri ile uyumlu çalışması için (senkronize) özetleme fonksiyonları (hashing functions) kullanılabilir. Emekleyiciler aralarında bu özet bilgiyi değiştirerek uyumlu çalışabilirler.
Masa Üstü Emekleyicileri (Desktop Crawlers): Genelde kişisel bilgisayarlarda bulunan dosyaların veya veri kaynaklarını dolaşan emekleyicilerdir. Bazı durumlarda şirket içi veya kurum içi (üniversiteler, hastanaler gibi) dolaşma da planlanabilir. Genel olarak web emekleyicileri ile farkları aşağıda listelenmiştir:
- Verinin bulunması çok daha kolaydır
- Verinin değişme tarihini öğrenmek kısmen mümkündür (dosyaların değişme tarihi)
- Disk ve işlemci kullanımı konusunda daha kısıtlı imkanlar vardır.
- Çok çeşitli dosya tiplerinın tanınması gerekir.
- Verinin kişiselliği önemlidir ve kişisel verilere erişimin kontrol altında tutulması gerekir.
Search engines de 3 temel bolum crawler/spider, indexer ve ranker i tam olarak anlayamadim.ozellikle bu yazida bahsettiginiz crawler i.
rica etsem somut bir ornek vermeniz mumkun mu?anlasilabillirligi arttirmak adina.simdiden tesekkurler.
Elbette, öncelikle aşağıdaki bağlantıyı okumakta yarar var orada bu bileşenler gösterilmiş:
http://www.bilgisayarkavramlari.com/2008/12/09/arama-motoru-search-engine/
Ayrıca kısaca bilgi vereyim.
Crawler / Spider veya web robot diye geçen kısım, internet üzerinde bir adresten başlayarak bütün bağlantıları (link) takip eden ve sürekli yeni sayfalara giderek interneti dolaşan yazılımdır. Örneğin şu anda yorum yazdığımız sayfayı düşünelim, buradaki bütün bağlantılar yeni bir sayfa açıyor, o sayfalarında ziyaret edilmesi gerek, işte crawler (emekleyici) bunları listesine ekleyip sırasıyla dolaşan yazılım.
indexer (fihristleyici) ise bu sitelerin içeriklerini bir veri tabanı üzerinde özel bir şekilde tutar. Örneğin amacımız arama motoru yazmak olsun ve bize verilen kelimelerin hangi sitelerde geçtiğini listeyelecek olalım. İşte böyle bir proje için fihristleyici, kelimeleri ve geçtikleri siteleri bir tabloda tutup arandığında bu tabloyu sorgulayıp sonuçları getirebilir. Veya yüzlerce veri yapısından, probleme uygun bir tanesi seçilip uygulanabilir (örneğin ağaç yapısı veya hash gibi). Kısaca fihristleyicinin amacı, ilerideki aramalarda hızlı sonuç döndürecek şekilde, crawlerin dolaştığı site içeriklerini uygun bir veri yapısı(data structure) üzerinde tutmaktır.
Örneğin google fihristleyicisini big table (büyük tablo) ismi verilen bir algoritma ile tutmaktadır:
http://www.bilgisayarkavramlari.com/2011/11/20/buyuk-tablo-big-table/
Son olarak ranker’ı sormuşsunuz. Ranker arama sonuçlarının hangi sıra ile gösterileceğini belirleyen yazılımdır. Örneğin bize para ödeyenlerin daha yukarıda çıkmasını mı istiyoruz? Ya da arama yapan kişinin daha önce yaptığı on aramadaki bilgilere göre (diyelim ki son on aramada sinemalar ile ilgili arama yapmış, sonra meksika yemeği arattığında, meksika yemeği satan restoranlardan sinemalara yakın olanları daha yukarıda gösterebiliriz) ya da arama yapan kişinin demografik bilgilerini biliyoruz buna göre mi sıralama yapacağız (örneğin kullanıcının yaşını biliyorsak, oyun kelimesini arattığında, çocuklar için olan oyunları daha yukarıda veya yetişkinse yetişkinler için olan oyunları daha yukarıda gösterebiliriz) gibi kriterlere göre arama sonuçlarını sıralayan yazılımdır. Yani tamamen tasarıma bağlı olarak arama sonuçlarını sıralar ve sonuçlar bu sırada gösterilir (bazı sonuçlar ilk sayfada bazıları ikinci sayfada vs. vs.) işte bu yazılıma da ranker ismi veriliyor.
Başarılar
Cok tesekkurler.Sitenizi uzun zamandir takip ediyorum.Cogu anlamadigim dersleri sizin sayenizde ogrendim.