Pertimbangkan meta-point: apa yang dicari pewawancara?
Sebuah pertanyaan besar seperti itu tidak mencari Anda untuk membuang-buang waktu Anda dalam seluk beluk menerapkan algoritma tipe PageRank atau bagaimana melakukan pengindeksan terdistribusi. Alih-alih, fokuslah pada gambaran lengkap tentang apa yang akan diambil. Sepertinya Anda sudah tahu semua bagian besar (BigTable, PageRank, Peta / Kurangi). Jadi pertanyaannya adalah, bagaimana Anda benar-benar menyatukan mereka?
Ini tikaman saya.
Fase 1: Infrastruktur Pengindeksan (menghabiskan 5 menit untuk menjelaskan)
Fase pertama penerapan Google (atau mesin pencari) adalah membuat pengindeks. Ini adalah perangkat lunak yang merayapi kumpulan data dan menghasilkan hasilnya dalam struktur data yang lebih efisien untuk melakukan pembacaan.
Untuk menerapkan ini, pertimbangkan dua bagian: crawler dan pengindeks.
Tugas crawler web adalah untuk spider tautan halaman web dan membuangnya ke dalam satu set. Langkah paling penting di sini adalah untuk menghindari terjebak dalam infinite loop atau pada konten yang dihasilkan tanpa batas. Tempatkan masing-masing tautan ini dalam satu file teks besar (untuk saat ini).
Kedua, pengindeks akan berjalan sebagai bagian dari pekerjaan Map / Reduce. (Memetakan fungsi ke setiap item dalam input, dan kemudian Mengurangi hasilnya menjadi satu 'hal'.) Pengindeks akan mengambil satu tautan web, mengambil situs web, dan mengubahnya menjadi file indeks. (Diskusikan berikutnya.) Langkah reduksi hanya akan menggabungkan semua file indeks ini menjadi satu unit. (Daripada jutaan file yang lepas.) Karena langkah-langkah pengindeksan dapat dilakukan secara paralel, Anda dapat mengolah pekerjaan Peta / Perkecil ini di pusat data yang besar dan sewenang-wenang.
Fase 2: Spesifikasi Algoritma Pengindeksan (luangkan 10 menit untuk menjelaskan)
Setelah Anda menyatakan bagaimana Anda akan memproses halaman web, bagian selanjutnya adalah menjelaskan bagaimana Anda dapat menghitung hasil yang bermakna. Jawaban singkat di sini adalah 'peta lebih banyak / Mengurangi', tetapi pertimbangkan hal-hal yang dapat Anda lakukan:
- Untuk setiap situs web, hitung jumlah tautan yang masuk. (Halaman yang lebih banyak ditautkan ke halaman harus 'lebih baik'.)
- Untuk setiap situs web, lihat bagaimana tautan disajikan. (Tautan dalam <h1> atau <b> harus lebih penting daripada yang terkubur dalam <h3>.)
- Untuk setiap situs web, lihat jumlah tautan keluar. (Tidak ada yang suka spammer.)
- Untuk setiap situs web, lihat jenis kata yang digunakan. Misalnya, 'hash' dan 'tabel' mungkin berarti situs web tersebut terkait dengan Ilmu Komputer. 'hash' dan 'brownies' di sisi lain akan menyiratkan situs itu tentang sesuatu yang jauh berbeda.
Sayangnya saya tidak cukup tahu tentang macam-macam cara untuk menganalisis dan memproses data menjadi super bermanfaat. Tetapi ide umum adalah cara yang dapat diskalakan untuk menganalisis data Anda .
Fase 3: Melayani Hasil (luangkan 10 menit untuk menjelaskan)
Fase akhir sebenarnya melayani hasil. Semoga Anda telah membagikan beberapa wawasan menarik tentang cara menganalisis data halaman web, tetapi pertanyaannya adalah bagaimana Anda sebenarnya menanyakannya? Secara anekdot, 10% permintaan pencarian Google setiap hari belum pernah terlihat sebelumnya. Ini berarti Anda tidak dapat menyimpan hasil sebelumnya.
Anda tidak dapat memiliki satu 'pencarian' dari indeks web Anda, jadi mana yang akan Anda coba? Bagaimana Anda melihat indeks yang berbeda? (Mungkin menggabungkan hasil - mungkin kata kunci 'stackoverflow' muncul sangat banyak dalam beberapa indeks.)
Juga, bagaimana Anda melihatnya? Apa jenis pendekatan yang dapat Anda gunakan untuk membaca data dari sejumlah besar informasi dengan cepat? (Jangan ragu untuk memberi nama pada basis data NoSQL favorit Anda di sini dan / atau lihat apa yang dimaksud dengan BigTable Google.) Sekalipun Anda memiliki indeks luar biasa yang sangat akurat, Anda perlu cara untuk menemukan data di dalamnya dengan cepat. (Misalnya, cari nomor pangkat untuk 'stackoverflow.com' di dalam file 200GB.)
Masalah Acak (sisa waktu)
Setelah Anda menutupi 'tulang-tulang' mesin pencari Anda, jangan ragu untuk mencari tahu tentang setiap topik yang Anda ketahui.
- Kinerja antarmuka situs web
- Mengelola pusat data untuk pekerjaan Peta / Kurangi Anda
- A / B menguji peningkatan mesin pencari
- Mengintegrasikan volume pencarian / tren sebelumnya ke dalam pengindeksan. (Misalnya, mengharapkan server frontend memuat lonjakan 9-5 dan mati di awal pagi.)
Jelas ada lebih dari 15 menit materi untuk dibahas di sini, tapi semoga cukup untuk memulai.