POST TIME:2018-12-03 21:46
本篇文章是對于搜索系統工作原理一個整體的介紹,對于原理的理解,是設計系統舉重若輕的基礎。
1. 信息和信息量在介紹搜索之前,先介紹兩個概念:信息和信息量。
(采用的均是自以為比較通俗易懂的解釋,如果感興趣可以讀相關書籍)
1.1 信息是減少不確定性的東西,信息也是增加確定性的東西。
前半句是香農信息定義,后半句是逆香農信息定義。舉個栗子,回想下,和一個異性交往的過程。在你遇到TA之前,你不知道這個世界上有這個人的存在,后來你看到了TA的樣子,后來你了解了TA的性格、口頭禪,往事。然后一步一步,你對TA從絲毫不了解,到逐漸熟識。這期間就是一個你不停獲取TA信息的過程,正是這些信息,讓你從完全不確定TA是怎樣的人,到完全確定TA很適合你。
1.2 信息量是一個信息能減少不確定性的度量,信息量也是一個信息能增加確定性的度量。
關于信息量,有很多數學的描述,但是通俗來講,可以這么簡單理解。舉個栗子,證人描述嫌疑犯。A證人的信息是“他是個男人”。B證人的信息是“TA是個高中男生”,C證人的信息是“TA是個長發170擺布的高中生。”D證人的信息是“我認識他,他是學校的扛把子陳浩南”。我們直覺能感受到信息量的大小關系為:A
翻譯為計算機可以理解的數學邏輯:本地男人的比例是50%,本地高中男生的比例為8%,本地長發170擺布的高中男生的比例是4%,本地叫陳浩南的扛把子的比例是0.0001%。因為P(A)>P(B)>P(C)>P(D),所以信息量的大小關系為:A
2. 搜索的產品邏輯搜索滿足了用戶迅速找到本身感興趣內容的需求。用戶輸入一個query,搜索系統按照用戶的輸入的信息,篩選出系統認為用戶感興趣的內容,同時根據系統認定的重要性進行排序展示。請注意這個表述,簡單而言,搜索可以分為三步。
Step1:對用戶輸入信息的解讀Step2:按照用戶輸入信息對內容進行篩選Step3:對篩選后的結果進行排序而要了解這三步怎么在搜索系統中完成,就需要先了解搜索的辦事器怎么存儲信息。
3. 搜索數據的存儲原理上一張圖,假設我們做了一個新聞網站,那么它的結構就是下圖。內容進行了簡化,假設一個新聞,文本只有標題,導語,正文。數據只有閱讀量,評論數,分享數。
圖1-1
差不久不多就是上圖右邊的這種結構。右邊標識的是新聞內容的存儲:就像圖書館的書一樣,整整齊齊按挨次排好,便利查找(這個存儲結構的名字叫做索引,就是來自于圖書館的用語)。左邊是詞庫:只要一次搜索的輸入詞能匹配到詞庫,就可以快速的查找詞庫到對應的內容。
每個搜索系統都有本身的詞庫,無法對應到分詞的搜索行為就會沒有結果。每個搜索系統都會按照目標用戶的差別,有對應的一套詞庫,就像字典一樣,《冶金專業詞典》和《生物學大辭典》收錄的詞條是差別的,知乎的詞庫和淘寶的詞庫也差別。搜索的很多優化都是集中在詞庫的優化上。
簡單總結下,搜索的存儲原理就是:一個系統詞庫,一個擺列整齊的內容索引庫,同時系統詞庫和內容索引庫之間可以快速關聯。
在這個搜索系統的儲存結構的基礎上,我們提到的搜索三步驟將依次展開。
4. Step1:對用戶輸入信息的解讀前面提到,搜索的詞庫是有限的,但是用戶的輸入卻是沒有限制的。那么怎么把無限制的搜索轉化為有限的詞庫,而且匹配到對應的結果呢?這里需要介紹一個新的概念:分詞,簡單來說就是對輸入字符串進行分拆。
同樣以【圖1-1】中的新聞搜索系統為例。如果用戶輸入的query為“中國的轉基因食物”,系統中其實沒有這個詞。如果沒有分詞功能,這個搜索就會立即結束,,即使系統里確實有對應的內容。分詞的工作原理是在無法精確匹配的情況下,會對用戶的輸入進行進一步的拆分。于是我們得到了下面的結果。
“中國的轉基因食物”——“中國”、“的”、“轉基因”、“食物”。
并不是所有的詞都有信息量,如果召回“的‘’的結果,那么幾乎所有的新聞內容里面都會有這個字,召回這么多結果顯然是分歧錯誤的。好比這個query里的“的”,這個詞實際上在分詞系統中會被直接忽略掉。正是因為出現在內容中的概率差別,一個詞出現的新聞越多,這個詞的信息量就越小,信息量太小的詞會被忽略,也就是停用詞。同時包羅信息量越大的詞的新聞內容,會更更要。那么去掉停用詞之后,結果就進一步簡化。
“中國的轉基因食物”——“中國”、“轉基因”、“食物”。
經過處理,用戶非尺度的query就被轉化為尺度的詞庫,就可以快速找到對應的內容了。如【圖1-1】所示。
5. Step2:按照用戶輸入信息對內容進行篩選經過對用戶的query解讀之后,其實就得到了一些尺度化的詞,而這些詞就會對應一些搜索目標內容,接下來就是對于內容的篩選。