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