探索百度搜索引擎算法技巧分析系列(一)

回顧過去,展望未來,未來成了搜索引擎的天下,個人、企業都瘋狂的關注著搜索引擎的變化。作為企業,會根據搜索引擎的知名度以及日流量來選擇是否要投放廣告等;作為普通線民,會根據搜索引擎的性能和技術來選擇自己喜歡的引擎查找資料;作為技術人員,會把有代表性的搜索引擎作為研究物件……一時成了搜索經濟時代。搜索成了網路的重中之重。對從事網路的朋友來說,瞭解一個好的搜索引擎,知道它的優勢所在,掌握它的規律是很有必要的。

如何設計一個高效的搜索引擎?我們可以以百度所採取的技術手段來探討如何設計一個實用的搜索引擎。搜索引擎涉及到許多技術點,比如查詢處理,排序演算法,頁面抓取演算法,CACHE機制,ANTI-SPAM等等。這些技術細節,作為商業公司的搜索引擎服務提供商比如百度,GOOGLE等是不會公之於眾的。我們可以將現有的搜索引擎看作一個黑盒,通過向黑盒提交輸入,判斷黑盒返回的輸出大致判斷黑盒裏面不為人知的技術細節。

查詢處理與分詞是一個中文搜索引擎必不可少的工作,而百度作為一個典型的中文搜索引擎一直強調其“中文處理”方面具有其他搜索引擎所不具有的關鍵技術和優勢。那麼我們就來看看百度到底採用了哪些所謂的核心技術。我們分兩個部分來講述:查詢處理和中文分詞。

先來談系列一:查詢處理

用戶向搜索引擎提交查詢,搜索引擎一般在接受到用戶查詢後要做一些處理,然後在索引資料庫裏面提取相關的資訊。那麼百度在接受到用戶查詢後做了些什麼工作呢?

1、假設用戶提交了不只一個查詢串,比如“資訊檢索理論工具”。 那麼搜索引擎首先做的是根據分隔符號比如空格,標點符號,將查詢串分割成若干子查詢串,比如上面的查詢就會被解析為: <資訊檢索,理論,工具> 三個子字串;這個道理簡單,我們接著往下看。

2、假設提交的查詢有重複的內容,搜索引擎怎麼處理呢?比如查詢“理論 工具理論”,百度是將重複的字串當作只出現過一次,也就是處理成等價的“理論工具”,而GOOGLE顯然是沒有進行歸併,而是將重複查詢子串的權重增大進行處理。那麼是如何得出這個結論的呢?我們可以將“理論工具”提交給百度,再返回文檔,大致看看第一頁的返回內容。接著繼續,我們提交查詢“理論 工具理論”,在看看返回結果,仍然是那麼多返回文檔,當然這個不能說明太多問題,那看看第一頁返回結果的排序,看出來了嗎?順序完全沒有變化,而GOOGLE 則排序有些變動,這說明百度是將重複的查詢歸併成一個處理的,而且字串之間的先後出現順序基本不予考慮(GOOGLE是考慮了這個順序關係的)。

3、假設提交的中文查詢包含英文單詞,搜索引擎是怎麼處理的?比如查詢”電影BT下載”,百度的方法是將中文字串中的英文當作一個整體保留,並以此為中斷點將中文切分開,這樣上述的查詢就切為 <電影,BT,下載> ,不論中間的英文是否一個字典裏能查到的單詞也好,還是隨機的字元也好,都會當作一個整體來對待。至於為什麼,你用查詢“電影dfdfdf下載”看看結果就知道了。當然如果查詢中包含數字,也是如此辦理。

到目前為止,看似都很簡單,也很清楚,百度怎麼處理用戶查詢的呢?歸納如下:首先根據分割符號將查詢分開,然後看看是否有重複的字串,如果有,就拋棄多餘的,只保留一個,接著判斷是否有英文或者數字,如果有的話,把英文或者數字當作一個整體保留並把前後的中文切開。