搜尋引擎的那些事(開篇)

來源:互聯網
上載者:User

【 聲明:著作權,歡迎轉載,請勿用於商業用途。  聯絡信箱:feixiaoxing @163.com】 

    說起搜尋引擎,大家肯定都不陌生。至少對於我來說,每日百度的次數不下幾十次。在資訊的查詢和搜尋方面,百度幫了我很大的忙,當然這中間也有很多搜尋結果我也不是很滿意。那麼不知道大家有沒有興趣知道搜尋引擎是怎麼做出來的?其實說簡單也簡單,說複雜也複雜。

    大家知道,網路搜尋結果都是按照網頁來進行尋找的。一般來說,如果網頁中包含了這個關鍵字,那麼這個網頁就是我們需要的。但是,事實上結果不都是這樣的。大家知道,互連網上的網頁非常多,想要在不到1秒鐘的時間內就尋找到自己需要到那個結果基本上來說是不可能的。別的不說,把這互連網上幾十億個網頁下載下來就不是一件容易的事情,更不要說後面的尋找和遍曆了。所以說,搜尋引擎所尋找的任何結果都是電腦預先處理的結果,有了這個基本概念之後後面的講解就比較容易了。

    要做一個簡單的搜尋引擎其實不是件複雜的事情。關鍵步驟可以分成三個部分,即網頁的遍曆和下載、中文分詞和解析、查詢結果和排序。

(1) 網頁下載和遍曆

    要有自己的搜尋引擎,要有自己的資料,這個資料就是網頁的數量。說到這裡,我們就不得不說網頁的一個重要特性,那就是超連結。有了超連結,我們就可以繼續爬行到別的網頁了。說到這裡,有幾個問題需要考慮,這個網頁該怎麼爬行,是首先按照寬度進行遍曆呢,還是按照廣度進行遍曆呢,如何判斷哪些網頁是已經遍曆過了的,哪些網頁尚沒有遍曆,如果利用多線程對網頁進行遍曆呢?

(2)中文分詞和倒排檔案

    有了自己的網頁,這隻是一個基本條件。下面,我們就需要對網頁的資料進行拆解,對網頁中的每一個句子進行拆解。這就是所謂的中文分詞。當然,中文分詞可以有很多的方法,基本上說按照字典來拆解就可以了,要麼從左向右進行拆解,要麼從右向左進行拆解,或者按照最小片語數目進行拆解也可以。當然,網頁的數目是在不斷遞增的,但是一般來說一個語言的片語的數目是一定的,一般來說漢語的片語也就在幾十萬個左右。其他語言呢,比如說英語,因為英語是由一個一個單片語成的,按照牛津詞典的標準,單詞的最大數目也就在幾十萬個單詞上下。所以,在此我們設計了倒排檔案的格式。用最簡單的話說,我們不再關注一個網頁包含了哪些詞語,我們更關注某個詞語在哪些網頁中出現了,這就是倒排檔案的基本思路。

(3)索引尋找和排序

    有了倒排檔案之後,我們就可以把這些索引結果用資料庫進行儲存起來的。因此,大家注意我們搜尋的任何結果都是從這份資料庫合并過來的。當然,查到了這些結果之後,我們怎麼判斷哪些排序結果應該排在前面,哪些結果應該排在後面。說到這裡,一個不得不提的演算法就是pagerank,這個演算法的基本思想就是大家都想要的結果就是你想要的結果,某個網頁重要是因為別人引用它的次數比較多。打個通俗的比方來說,一個被大家多次引用的論文品質肯定差不到哪去。當然,還有其他影響排序的因素,比如字頻、網頁日期、網站權重、是否為客戶購買的關鍵字、是否為作弊網頁、是否為標題文字等等。

    選到這一個題目來寫我的部落格,和我的工作沒有什麼關係,主要是因為個人的興趣而已。當然,整個文章的風格和自己之前的部落格差不多,基本上還是一個標題一個標題來寫,中間會穿插C語言代碼描述該功能是怎麼實現的。要是還能對大家有一些協助,那是我最開心不過的事情了。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.