搜索引擎:基礎原理全景介紹及產品應用場景
但網站內部的搜索功能,基本每家公司都在做,大家但凡使用的成熟一點的互聯網APP或者網站,都會提供搜索服務,搜索已經成為信息檢索的主流手段了。
“ 簡單聊聊搜索引擎相關的內容。”
好久沒有聊關于模型、算法相關的內容了。四年前,我主導做過一款金融垂直搜索引擎的產品,對搜索有一些簡單的了解。因此后面會嘗試分享幾篇搜索推薦相關的算法,本篇以搜索的基礎原理切入,簡單聊聊搜索的基礎內容,適合小白入門。
01
—
什么是搜索引擎
是的,提到搜索引擎,我想大家應該都能想到【百度】、【谷歌】,他們都是搜索引擎。
例如上圖,左側呈現的內容便是搜索結果list。
其實,還有一種搜索引擎,雖然大家也一直在用,但真的關注過嘛?例如像京東的商品搜索:
因此,總結下來,搜索引擎主要包括兩類:一類是類似百度、Google這種的專門的搜索引擎,搜索即公司的主要業務;另一類是作為網站內部的一個功能模塊,用于服務主流業務的。
目前專職做搜索引擎的公司,其實也不是很多了,國內主要就是百度、搜狗搜索、360搜索這些,行業的集中度已經很高了。(下圖僅供參考)
但網站內部的搜索功能,基本每家公司都在做,大家但凡使用的成熟一點的互聯網APP或者網站,都會提供搜索服務,搜索已經成為信息檢索的主流手段了。不信大家打開手機的美團、知乎、騰訊視頻等等,首頁核心位置都會提供搜索入口。
專業的搜索引擎和站內搜索功能,異同點有哪些呢?
差異點:主要是兩者的檢索目標內容是有差別的。專業搜索引擎更加綜合,目標是滿足用戶對于信息(尤其是文本信息)的檢索訴求;站內搜索主要的檢索對象基本就是網站的服務內容。視頻網站搜索的就是視頻,外賣網站搜索的就是店鋪,電商網站搜索的就是商品等。由于檢索的內容、不同網站的業務目標都有差別,因此各個網站內部的搜索邏輯肯定也是千差萬別。
相同點:就是都是搜索引擎。核心的技術及大的框架都是基本一致的。
02
—
搜索服務的核心過程
下面我們聊聊一個搜索服務的核心流程都有哪些。
(1)數據的獲取+處理
對于專門的搜索引擎來講,數據及信息的獲取主要指的是爬蟲的操作。即下圖的sp左側部分。
各位朋友有沒有想過,百度可以實時返回你查詢的關鍵詞或者句子,是怎么做到的呢?比如你百度搜索【數據科學】,是實時去全網上全找一圈嗎?當然不是。哪怕計算資源再多、計算效率再快,也不可能在短時間內告訴你靠譜的結果。
因此,為了解決效率的問題,所有的搜索引擎都是提前將各類網站的數據爬下來,進行處理加工,等待用戶的查詢操作。
這里需要做的數據處理加工工作其實是非常多的,比如需要對網頁的重復內容進行去重,比如需要對所有的網頁進行文本解析、語義識別,比如需要對文本進行索引的建立以便于后續的關鍵詞檢索等等。這里就不展開了,后面我們有機會逐一分享。
而對于網站內部的搜索功能模塊來講,數據的獲取其實是比較容易的,不需要爬取,都是自己公司數據庫中現成的數據。我們以電商網站的搜索舉例,要搜索的都是商品,因此主要針對商品數據進行處理就好。而商品的數據肯定有商品表,基礎信息已經很豐富了,足夠滿足搜索的基礎應用。相對專業搜索引擎而言,數據處理的難度是小了很多。
(2)搜索query解析
無論用戶是否進行搜索,上面的第一個環節都是需要做的基礎工作。當用戶進行搜索操作時,需要進行的處理的是本環節:query解析。
所謂的query解析,就是理解和分析用戶輸入的搜索語句(query),到底是個啥意思。
比如輸入【數據科學家的主要工作內容是啥】,搜索引擎只是冷冰冰的機器,它是不理解這句話是啥含義的,那它怎么能給你靠譜的答案呢?
其實很多朋友也能想到,直接基于關鍵詞進行匹配唄~是的,大的邏輯沒毛病,但是真正落地就會發現,有很多細節問題。
比如,關鍵詞匹配,那首先我得知道【數據科學家的主要工作內容是啥】有哪些關鍵詞對不?這就得進行分詞了。所謂的分詞,就是對query進行切分為符合常識的關鍵詞,這是典型的NLP(自然語言處理)中的知識內容。比如上面切分成【數據】+【科學】+【家的】+【主要】……還是【數據】+【科學家】+……這是完全不一樣的。
再比如下面的【研究生物學】的切分,更是五花八門了。分詞相關的NLP算法,后面詳細分享,這里只是拋個磚。
再比如,【數據科學家的主要工作內容是啥】這句話,其中有【的】、【是啥】這種詞,如果進行關鍵詞匹配是不是會有影響?畢竟這種語氣詞既沒有啥重要性,在網頁中出現的頻率又高。這里就涉及了核心關鍵詞的提取、權重判斷等。
再比如下面這個搜索【我和我的爺輩】,可能是我輸入錯了,但是query猜出我可能搜的是【我和我的父輩】,進行了糾正,如果一根筋的搜索,是不可能出來這個結果的。
綜上,在query解析這個環節,主要需要搞定的是用戶輸入的語句,如何對語句進行處理,使得機器能夠理解語句的含義,便于后續高效地搜索到相關的結果。
當然,基于關鍵詞是比較基礎的了,現在更多地朝著知識圖譜、問答的方向邁進,更加符合真正的搜索需求。
(3)內容檢索召回+排序
上面兩個環節,一個環節是從服務端出發,進行數據的處理加工;一個環節是從用戶端出發,進行用戶搜索語句的理解。
下面就到了第三個重要環節:基于處理后的用戶的搜索內容,到處理完的庫中檢索結果,把相關的內容都找出來,并按照一定的規則進行排序。
這個內容是搜索引擎的核心內容。因此不同的公司、不同網站的搜索引擎邏輯都會差別比較大,而排序邏輯更是千差萬別。
需要排序這個事情應該比較好理解,理論上,我們是給匹配到檢索內容的結果進行打分,分值高的排在前面。用戶肯定是想要看到最相關、或者我們想讓用戶看到最重要的內容在前面,越往后用戶看到的幾率越小。
因此,針對如何提升排序這個事情,就誕生了一個專門的行業、職位:SEO優化(Search Engine Optimization),即提升相關內容的網站排名。對于淘寶賣家而言,需要提升自己家商品在淘寶天貓的搜索排名,會進行各種關鍵詞、指標的優化;網站為了提升自己的百度搜索排名,也會進行各種標題等優化。
所以為了保障網站的排名公平,防止大家針對排序規則鉆空子,往往各家網站的搜索排序規則、打分權重等都是比較保密的。
(4)搜索結果呈現
最后一個環節,主要就是產品功能層面的內容了,即針對搜索返回的排序好的結果,進行良好的產品化呈現。
比如知乎搜索【薇婭】:
在首頁(綜合)模塊都是各類型搜索結果的top合集:包括討論相關的內容、問答相關的內容、視頻相關等。這種呈現方式是多類型網站比較主流的混合呈現方式。因此,對于搜索而言,每種不同方式也是一個單獨的搜索引擎,然后不同的結果進行產品化的merge。
當然,隨著技術的越發完善,用戶體驗不斷提升,搜索也會有了各種特型呈現。比如我們在百度搜索【北京青島】:
這里不再是按照上面的環節進行單純的檢索,而是對某些特定類型的關鍵詞進行了特殊化呈現,這屬于在基礎搜索服務上的補充。上面這個案例的規則應該是用戶輸入的query中包含2個城市名稱,則觸發該特型呈現。感興趣的朋友可以自己試試【山東山西】、【中國日本】、【北京深圳青島】等,都是沒有特型的,哈哈。
特型呈現對于用戶的體驗而言是巨大的提升,但對于搜索引擎而言,需要不斷的積累,不斷地增加,是個很長期的事情。
當然,不止搜索引擎有特型,其他網站內部搜索也是可以有特型呈現的。比如下面淘寶搜索某個品牌名稱,除了商品list,還會增加旗艦店店鋪的大流量入口(雖然這是個廣告位)。
關于搜索相關的技術內容,今天就先介紹這些。搜索涉及的內容非常龐大,不是一篇文章可以講清楚的,這篇文章主要目的是對搜索的整體框架有個簡單的了解,明白搜索的基礎工作原理。后面有機會我們再一一展開,分享更多細節的內容。也是比較有趣的。今天的文章就這些,感謝大家關注~
文章來源:作者:NK冬至。公眾號:首席數據科學家。
圖片來源:部分圖片來源網絡,版權歸原作者所有,不為商業用途,如有侵犯,敬請作者與我們聯系。文章為作者獨立觀點,不代表135編輯器立場。
立即登錄



