Meta noktayı göz önünde bulundurun: görüşmeci ne arıyor?
Bunun gibi bir mamut sorusu, PageRank tipi bir algoritma uygulamanın ya da dağıtılmış indekslemenin nasıl yapılacağının nitrit boşluğunda vaktini boşa harcamayı istemiyor. Bunun yerine, ne alacağının tam resmine odaklanın . Büyük parçaları zaten biliyorsunuz (BigTable, PageRank, Map / Reduce). Öyleyse asıl soru, onları nasıl birbirine bağlarsınız?
İşte bıçağım.
Faz 1: Endeksleme Altyapısı (açıklayarak 5 dakika harcayın)
Google’ı (veya herhangi bir arama motorunu) uygulamanın ilk aşaması bir dizin oluşturucu oluşturmaktır. Bu, veri kümesini tarayan ve sonuçları okuma için daha verimli bir veri yapısında üreten yazılım parçasıdır.
Bunu uygulamak için iki bölüm düşünün: bir paletli ve dizinleyici.
Web tarayıcısının işi, web sayfası linklerini örmek ve bir kümeye dökmektir. Buradaki en önemli adım, sonsuz döngüde veya sonsuz üretilen içerikte yakalanmamaktan kaçınmaktır. Bu bağlantıların her birini tek bir büyük metin dosyasına yerleştirin (şimdilik).
İkincisi, dizinleyici bir Harita / Küçültme işinin parçası olarak çalışacaktır. (Girdideki her öğeye bir işlev eşleyin ve ardından sonuçları tek bir 'şeye' düşürün.) Dizinleyici, tek bir web bağlantısı alır, web sitesini alır ve bir dizin dosyasına dönüştürür. (Daha sonra tartışılacaktır.) Azaltma adımı bu indeks dosyalarının tümünü tek bir ünitede toplayacaktır. (Milyonlarca gevşek dosya yerine.) Dizin oluşturma adımları paralel olarak yapılabildiğinden, bu Harita / Küçültme işini isteğe bağlı olarak büyük bir veri merkezinde birleştirebilirsiniz.
Faz 2: Endeksleme Algoritmalarının Özellikleri (açıklamak için 10 dakika harcayın)
Web sayfalarını nasıl işleyeceğinizi belirttikten sonra, bir sonraki bölüm anlamlı sonuçları nasıl hesaplayabileceğinizi açıklıyor. Buradaki kısa cevap 'çok daha fazla Harita / Küçült', ancak yapabileceğiniz şeyleri düşünün:
- Her web sitesi için gelen bağlantıların sayısını sayın. (Daha çok bağlantılı sayfalara 'daha iyi' olması gerekir.)
- Her web sitesi için, bağlantının nasıl sunulduğuna bakın. (<H1> veya <b> 'daki bağlantılar, <h3> içine gömülenlerden daha önemli olmalıdır.)
- Her web sitesi için giden bağlantıların sayısına bakın. (Kimse spam gönderenleri sevmez.)
- Her web sitesi için kullanılan kelime türlerine bakın. Örneğin, 'karma' ve 'tablo' muhtemelen web sitesinin Computer Science ile ilgili olduğu anlamına gelir. Diğer yandan 'karma' ve 'kekler' sitenin çok farklı bir şey olduğu anlamına gelir.
Ne yazık ki, süper yararlı olması için verileri analiz etme ve işleme koyma yöntemleri hakkında yeterince bilgim yok. Ancak genel fikir, verilerinizi analiz etmenin ölçeklenebilir bir yoludur .
Aşama 3: Sunum Sonuçları (açıklamak için 10 dakika harcayın)
Son aşama aslında sonuçlara hizmet etmektir. Umarım, web sayfası verilerinin nasıl analiz edileceğine dair bazı ilginç görüşler paylaşmışsınızdır, ancak soru aslında onu nasıl sorguladığınızdır? Aniden, her gün Google arama sorgularının% 10'u daha önce hiç görülmedi. Bu, önceki sonuçları önbelleğe alamayacağınız anlamına gelir.
Web dizinlerinizden tek bir 'arama' yapamazsınız, hangisini denerdiniz? Farklı endekslere nasıl bakarsınız? (Belki de sonuçları birleştirerek - belki de 'stackoverflow' anahtar kelimesi çok sayıda dizinde oldukça öne çıktı.)
Ayrıca, yine de nasıl bakarsınız? Büyük miktarlardaki bilgilerden hızla veri okumak için ne tür yaklaşımlar kullanabilirsiniz ? (En sevdiğiniz NoSQL veritabanınızı burada belirtmekten ve / veya Google’ın BigTable’ının ne hakkında olduğuna bakmaktan çekinmeyin.) Son derece doğru olan harika bir dizine sahip olsanız bile, verileri hızlı bir şekilde bulmak için bir yol gerekir. (Örneğin, 200GB'lik bir dosyanın içindeki 'stackoverflow.com' için rütbe numarasını bulun.)
Rastgele Konular (kalan süre)
Arama motorunuzun 'kemiklerini' kapladıktan sonra, özellikle bilgili olduğunuz herhangi bir konuya delik açmaktan çekinmeyin.
- Web sitesinin ön yüzünün performansı
- Map / Reduce işleriniz için veri merkezini yönetme
- A / B arama motoru geliştirmelerini test ediyor
- Önceki arama hacmini / trendlerini indekslemeye entegre etmek. (Örneğin, ön uç sunucunun yüklerinin 9-5'e yükselmesi ve AM'nin başlarında ölmesi bekleniyor.)
Burada tartışılacak 15 dakikadan daha fazla materyal olduğu açık, ama umarım başlamanız için yeterlidir.