Google還在小時候的時候就爬這個速度了:

In total it took roughly 9 days to download the 26 million pages (including errors). However, once the system was running smoothly, it ran much faster, downloading the last 11 million pages in just 63 hours, averaging just over 4 million pages per day or 48.5 pages per second.

要做搜尋引擎的話…一般會問:

我們缺搜尋引擎嗎?

基本上是不缺的,以搜尋資訊的角度來說不缺

但以搜尋人性的角度來說還有很多可做的,人性的需求目前還沒能被今天的搜尋引擎解決。

以人的行為模式與心理狀態來思考搜尋這件事情,站在巨人的肩膀上,思考接下來該做的是甚麼樣的搜尋服務,要提供給使用者甚麼樣的體驗。

觀察台灣市場,還是缺搜尋引擎的。

1. crawl 網頁

2. 網頁組成成分與web server相關協定

3. 全文檢索與排名原理

4. 中文字詞處理

5. regular expression

6. DB, server, 網路基於處理大量資料的性能調整,並能有效處理分散運算

7. 對特定搜尋領域需求的理解與規劃

8. 實做特定搜尋領域所需的介面與功能

9. 觀察使用者搜尋行為的介面設計與改善計畫

10. 內容產生策略與運作

11. 搜尋廣告處理與運作

12. ….

存放在資料庫中,所以當資料越多時,要刪除"同樣的網頁"就會很花時間。隨著資料越多,刪除重複的等待時間就越長,甚至可能timeout.

思考:

1. 重複不刪,日後批次刪除。

2. 增加DB欄位,透過重複標記的拆分比對,降低mysql的負擔。例如以32位做特徵碼來搜尋,不如切成4, 6, 11, 11四個欄位,逐欄比對,覺得可以增加效率 => 待實驗。

待處理:

1. 有效的爬行策略

2. 有效的網頁更新策略。

googlenoresult

Google最多顯示前一千筆資料

很合理。

1. sphinx.yml得照YML規矩寫…

2. zh_cn.utf-8的charset_typ應搭配charset_dicpath寫在config裡面. 否則會出現錯誤:unknown charset type ‘zh_cn.utf-8′

狀態update:

1. 光纖申請了固定IP – 122.116.180.22

2. crawler做了很多的改善,主要針對中文網頁抓取時,如何聰明的判斷他的編碼,以免在後續轉成utf-8的時候,造成亂碼。因為這部分的改良,才發現很多網站有以下的缺失:

a. 關於meta http-equiv, 例如<meta http-equiv=”content-type” content=”text/html; charset=iso-8859-1″>,常見的錯誤是寫了兩次,或者charset寫錯,或者是沒寫,或者是位置放太後面。

b. web server設定中,在response時沒有告知文件編碼 也就是 response.content_type中只會看到 text/html,看不到 charset。

如果1裡面沒寫meta,2的web server又不告知編碼,該文件又沒有宣告任何的 encoding,除了能判斷是否是unicode文件外,其他編碼目前就判斷不出來了(例如big5, euc-kr, euc-jp, gb2312….)。這種網頁居然也很多。

3. 全文搜尋引擎開始實做horizontal Partitioning。為了效能與擴展性考量。並加入自動化indexing的機制。

 4. 122.116.180.22/search可以看到目前的開發階段的內容。

5. 122.116.180.22/search/show_recent可以看到最新爬進來的網頁。

這都只是一個thread的Ror Ap,不用想他會多快。還是在開發測試階段。

 

做了搜尋引擎的prototype建立,感覺Google的優勢是:

crawler的數量,計算效能與頻寬真的很大,他可以 用 60MB/ sec的傳輸速度去對一個網站做indexing(這是實際觀察到的案例)。相當於是開了多個crawler去"攻擊"一個網站,短短十五分鐘內,Google可能就能將數十萬的網頁帶走index。

用一台1.5G ram的舊機器,爬了一個晚上,差不多才能抓最多十萬個網頁,每秒抓取的資料量不會超過500k。差別就在於:機器只有一小台;演算法須最佳化;以及頻寬不能比。

但Google的這個優勢,又不是完全無法模仿的,上述缺失皆可以透過良好的規劃解決,包括技術面與財務面,也難怪還是有創業者投入這塊做搜尋。更由於Google這種大到不容易做niche搜尋功能的公司,各種垂直搜尋引擎紛紛的出籠。

先寫到這裡,出去攀岩了。

爬網頁,做搜尋引擎. Google跟Bing在台灣沒甚麼進步吧?

怎麼樣可以做得比他們好?

1. 更貼近人性

2. 對網頁認識更深入

3. 推出垂直領域的搜索。

我覺得Bing很有前景,因為有機會在上面三個做得更好。

目前的嘗試是

1. 設備:家用電腦1.5G ram + 光纖 10M/1M

2. crawler: OpenWebSpider + 修改

3. 全文檢索: Sphinx (Coreseek)

4. Ruby and Rails + Thinking sphinx 是開發架構

http://220.136.114.194/search/

不定期跑索引更新,以及爬網頁。

把目前做的事情暫時定義為新搜尋引擎專案0.1版