昨天講到 API 的時候,我開始想到一個每天都會用到的東西Google 搜尋
平常遇到不知道的東西,我們第一個反應可能就是打開 Google
輸入幾個關鍵字
像是 台北火鍋推薦
按下搜尋之後
不到幾秒就會出現一大堆結果
但我突然想到
網路上的網站這麼多
Google 到底怎麼知道我要找的東西在哪裡?
難道我每搜尋一次,它就把整個網路重新看一遍嗎?
如果真的這樣做
應該早就來不及了 😂
所以今天就來看看
Google 搜尋到底是怎麼運作的?
一、Google 其實不是搜尋整個網路
這是我今天查資料後覺得滿有趣的一點
我們平常會說 我去 Google 一下
但實際上 Google 並不是在我們按下搜尋的那一刻,才開始從頭找遍所有網站
因為網路上的資料實在太多了
所以 Google 會事先建立一個非常龐大的資料庫
把它找到的網頁資訊整理起來
當我們真的輸入關鍵字時
就可以從已經整理好的資料中快速找到相關結果
二、Google 怎麼知道網路上有哪些網站?
這就要先提到一個很有趣的東西:Google 爬蟲
可以把它想像成 Google 派出去的小幫手
它們會在網路上找到不同的網頁
然後讀取網頁中的內容
再把相關資訊帶回去整理
這個過程通常被稱為:Crawling 爬取
所以 Google 並不是有人每天坐在電腦前面
一個網站一個網站手動整理 😂
而是透過自動化系統持續發現和處理網頁
三、找到網頁之後,Google 會做什麼?
找到網頁之後
Google 還需要理解這個網頁大概在講什麼
例如今天有一篇文章是在介紹台北火鍋推薦
Google 就需要分析這個網頁裡面的文字、標題等資訊
把這些內容整理成之後可以搜尋的資料
這個過程可以簡單理解成
找到網頁 → 讀取內容 → 整理資訊 → 建立索引
其中索引這個概念其實滿重要的
四、什麼是索引?
可以把 Google 的索引想成一本超大型的目錄
假設今天我想找一本書
如果圖書館把所有書全部亂放在地上
我要找一本書可能會找很久
但如果有一份完整的目錄告訴我:
這本書在哪一區
那本書在哪一排
找東西就會快很多
Google 的索引也有點類似這個概念
它會把網頁中的相關資訊整理起來
當我們搜尋時
就可以快速找到可能相關的網頁
五、那為什麼第一個結果通常不是隨便一個網站?
這就會進入另一個很重要的概念:排名
當我們搜尋一個關鍵字時
可能會有非常多網頁符合
Google 就需要判斷哪些結果比較符合我們的搜尋需求
這時候會使用很多不同的因素和系統來排序搜尋結果
例如網頁內容和搜尋關鍵字的相關程度
以及其他 Google 用來評估搜尋結果的因素
所以我們看到的搜尋結果
並不是單純按照誰先出現來排列
六、那 Google 是不是完全知道我想找什麼?
其實也不是···
Google 會根據我們輸入的關鍵字
以及其他可以幫助理解搜尋需求的資訊
去推測我們可能想找什麼
例如我只打 火鍋
和我打 台北好吃火鍋
搜尋結果就可能不太一樣
因為第二個搜尋方式提供了更多條件
Google 就比較容易理解我的需求
所以有時候搜尋技巧也很重要
不是 Google 不知道答案
而是我們給它的問題可能太模糊 😂
七、那 Google 為什麼可以這麼快?
現在就可以把前面的東西串起來了
Google 平常就已經在持續處理大量網頁
也會建立索引
所以當我們輸入搜尋關鍵字時
並不是從零開始找
而是從已經建立好的系統中快速找出相關結果
大概可以想成:
Google 爬蟲 → 找到網頁 → 分析內容 → 建立索引 → 我輸入關鍵字 → 系統找出相關結果 → 排列搜尋結果
所以我們按下搜尋之後
才會這麼快看到結果
八、心得
以前我使用 Google 的時候
真的只覺得輸入關鍵字 → 找到答案
但今天才發現
Google 搜尋其實不是單純幫我找網頁
背後還有爬蟲、索引、搜尋和排序等很多機制一起運作
而且這些事情早就在我們按下搜尋之前持續進行
所以當我今天再打開 Google 搜尋東西時
應該會多想到一件事
我現在看到的結果,其實是很多系統事先整理過之後才出現的
以前覺得搜尋只是一個很普通的功能
現在才發現背後其實滿複雜的
⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯
明日預告
前幾天我們講到 IP
今天又講到 Google 怎麼找到網頁
那我突然又想到一個每天都會用到的東西
GPS 到底是怎麼知道我在哪裡?
我手機明明沒有在地上插一根定位天線
為什麼打開地圖之後
它卻可以直接顯示我現在的位置?
下一篇就來研究:
「GPS 到底是怎麼知道我在哪裡的? 📍」