百度搜索引擎相關技術分析
 
  1、 爬蟲(Spider)——數據來源
 
  作為搜索引擎海量數據的來源,爬蟲是搜索引擎技術的重要一環,聞道軟件工作室有自己開發的爬蟲,所以對此技術很熟悉。
 
  爬蟲的英文是Spider,其實翻譯成蜘蛛更容易理解,無數網站的鏈接構成了一張巨大的網,搜索引擎的內容采集程序就像一只只勤勞的蜘蛛在這張網上爬來爬去,每遇到一個感興趣的節點便記錄下來留待其他的程序處理。
 
  爬蟲的實現其實不難,筆者用C++開發出一套爬蟲的雛形只有500行左右的代碼,而用python的話,不足100行。
 
  但是,任何程序只要牽扯到了海量數據處理其開發難度和開發周期也會變得非常之大。舉一個簡單的例子,判斷一個鏈接是否抓取過,這是爬蟲每分析出一個鏈接后都要做的判斷。如果此時你的內存中只有幾千、幾萬的鏈接,即使是一條條的遍歷對比也能基本上滿足要求,可如果是十萬、百萬、千萬、億級別呢?紅黑樹這些算法勉強可以應付,十億、百億、千億、萬億的級別呢?只能建立索引了。
 
  百度技術委員會理事長陳尚義透露,“百度每天處理的數據量將近100個PB,1PB就等于100萬個G,相當于5000個國家圖書館的信息量的總和”。
 
  如此龐大的數據,百度的技術實力可見一斑。
 
  除了搜索引擎外其實很多場景都應用到了爬蟲技術。如現在新興的輿情分析系統、數據挖掘系統等。
 
  現在越來越多的企業意識到數據的重要性,爬蟲作為一個重要的數據來源,將來肯定會在更多領域得到應用。
百度搜索引擎相關技術分析
  2、 中文分詞 ——數據預處理
 
  中文分詞也是搜索引擎中一個重要的技術,分詞是否精準直接關系到查詢結構是否符合搜索者的搜索意圖
 
  中文分詞相對于英文分詞來說難度大很多,因為英文有天然的分隔符,每個單詞都是一個意思.如“WenDao Software Studio”可以很簡單的根據空格分成“WenDao”,“ Software”,“Studio”三個詞。而對于對應的中文“聞道軟件工作室”,可以有“聞/道/軟/件/工/作/室”、“聞道/軟/件/工作/室”、“聞道/軟件/工作室”等等很多種分法。
 
  中文分詞是一個需要研究很深入的領域,當然,目前也有一些比較不錯中文詞庫,極大的簡化了開發者的工作。
 
  3、 全文檢索 ——數據預處理
 
  建立索引是在大數據量查詢時必不可少的重要方法。對于建立了索引的數據,我們可以在很短的時間內從海量數據中搜索到相同的數據。
 
  為了便于理解,我們可以把索引想象成一本書的目錄,有了目錄我們就可以在較短的時間內迅速找到我們感興趣的內容,而不必一頁頁翻開去找。
 
  全文檢索需要在中文分詞之后才能完成,需要把一個文章分成一個個關鍵詞然后分別建立索引,這樣才能達到從文章內容中搜索的目的。
 
  4、 排序 ——數據預處理
 
  排序是搜索引擎中非常重要的一環,排序不合理同樣會極大的傷害用戶體驗,而很多站長為了提高自身的排名又有許多作弊的手段,這使得排序算法的開發難度更大。
 
  搜索引擎能獲取的參數也就幾種,無論排序算法如何變化,那也只是調整這些參數的權重而已,以下列舉兩個重要的參數。
 
  1)、內容
 
  現在的搜索引擎非常重視用戶體驗,所以這將是所有影響排名的最重要的參數。
 
  如何判斷一個網站的內容質量高低?原創度是一個重要標準。比較常見的原創度判斷算法有基于空間向量的余弦算法,算法的根據是關鍵詞的頻度和權重,對于很多做偽原創的站長來說,這個值得研究。
 
  2)、外鏈
 
  外鏈仍然是搜素引擎評價一個網站質量的重要標準。在此不再贅述。
 
  5、查詢 ——數據顯示
 
  很多人認為百度、Google等搜索引擎能夠在那么短時間內在海量數據中找到結果,查詢算法的難度一定非常復雜,其實不然。相反,這是搜索引擎技術中最簡單的一環。它們之所以快,是因為經過前面幾個步驟,它們早就準備好了數據等待你的查詢。