當你搜索時,發生了什么?(上)

編輯導語:正如“萬物皆可百度”這句話所說的,當我們遇到生活上、工作上的難題時,第一反應就是善用檢索,通過各種搜索軟件解決我們的困惑。你知道,當按下搜索鍵時,發生了什么嗎?

文字較多,故分為上中下三部分,全文目錄如下:

當你按下搜索鍵時,發生了什么?(上)

一如“萬物皆可百度”、“萬物無難事,只要肯百度”所言,搜索在我們生活中早已成為習以為常的事情。畢業季的我們會在每日99+的群聊信息中搜索所需的信息;工作一上午后會點開外賣,找找看今日有沒有想吃的午餐;晚上回家路上,打開社交平臺,搜索看看今天都有什么頭條新聞…

點下搜索的瞬間,結果已出現在屏幕上,快速又便捷。殊不知在小小的屏幕之下,搜索引擎井然有序地在其巨大的數據庫中,完成了檢索、排序…

一、搜索

“當你終于將相關的所有信息搜羅到手后,你會做什么?”

作家詹姆斯·格雷克在《信息簡史》中所言,信息洪流中,各種應對策略也隨之出現。方法多種多樣,但歸根結底,本質上可歸為兩類:要么是過濾,要么是搜索。

現時代,我們每個人都能力去自由地生產、消費信息,海量的信息涌入數據庫。心理學家斯坦利·米爾格拉姆的一項社會網絡實驗“六度分隔”中所證,這個星球上的每個人之間最多相隔六個其他人。

信息亦如此,在復雜的網絡中,事物與事物之間擁有很高的連通度,但并非所有的連接都是有價值的,這些異乎尋常的連接度使得信息的搜索變得困難重重,搜索似乎變成了一件無邊無際的事情。

90年代末,有人預測在如此龐大的信息中完成檢索是不可能的,但至今,雖然搜索引擎在某些時候仍不盡人意,但已經具備了基本功能。

搜索介紹

維持生命力的方式就是讓“血液”不停的流動,從古至今人類一直尋求更新、更快的連接交互方式。

搜索加速了信息的流通,打通了海量數據之間的自守狀態,信息走向了開放。用戶可以快速的獲取到高價值的信息,企業和平臺也可通過搜索推送給用戶信息。我們可以更準確的找到結果,同時也可以看到更多相關的內容。

搜索是對互聯網上的信息資源進行搜集、整理、檢索的一項互聯網技術。產品的搜索功能發展至今,提供給用戶的已不僅僅是信息輸入的搜索框,面對用戶主動地推薦,引導用戶消費產品中優選高質量的內容。

可以說搜索帶給了我們全新的數字生活,在不勝其擾的信息中,消費者依賴于各種檢索,來區分精華和糟粕。尤其是對于新手用戶來說,還可以快速地了解到產品中包含的服務模塊,如下圖,分別為微信、淘寶、知乎的搜索界面。

  1. 微信為一款手機通信軟件:通過搜索,提供給用戶的內容包括有朋友圈、文章、公眾號、小程序、音樂、表情、服務;
  2. 知乎為一款問答社交軟件:提供時事熱榜、數碼、影視、科學、體育等欄目;
  3. 淘寶為一款線上購物軟件:主要解決用戶的購物需求,在搜索界面可以看到的功能模塊有搜索記錄、熱搜推薦(商品內容)。

當你按下搜索鍵時,發生了什么?(上)

二、搜索引擎

搜索引擎簡介

搜索引擎是一門檢索技術,其核心模塊一般包括爬蟲技術、檢索排序技術、網頁處理技術、大數據處理技術、自然語言處理技術等;根據用戶需求、一定算法、特定策略為用戶提供高速、高相關性的信息服務。

搜索引擎基本結構一般包括:搜索器、索引器、檢索器、用戶接口等四個功能模塊。搜索引擎通過其結構來實現搜索工作,基本原理可分為信息采集模塊、查詢表模塊、檢索模塊。

當你按下搜索鍵時,發生了什么?(上)

搜索引擎流程

我們從APP、網站、小程序等不同載體中看到的搜索框,實際只是搜索引擎系統提供給用戶的檢索界面,當我們輸入關鍵詞,點擊查詢后,搜索引擎對我們輸入文本進行復雜的分析,并從龐大的數據庫中獲取所有相關的信息,根據一定的排序策略將檢索結果呈現至用戶界面。

不同搜索引擎有各自的搜索策略,其索引的獲取、query的分析、排序的算法不盡相同,因此在不同產品的搜索引擎搜索相同的query會獲得不同的結果;當前搜索引擎收集用戶行為數據,著力個性化推薦,同一產品不同時期檢索某一關鍵詞,也可能會獲得不同的結果頁。

具體流程如下:

當你按下搜索鍵時,發生了什么?(上)

搜索引擎類型

提及搜索,我們腦海中馬上浮現的大概有百度、谷歌、淘寶等電商平臺搜索框、微博等社交平臺搜索框等。這些我們常用的搜索引擎,主要是全文搜索類型以及垂直搜索類型,除此之外,搜索引擎的類型還包括目錄搜索、元搜索檢索、集合式檢索、門戶搜索引擎等等。

  1. 全文搜索:全文搜索從互聯網上提取網站信息,對海量的數據進行有效的管理和快速檢索,最常用的全文搜索引擎有百度、谷歌等;
  2. 垂直搜索:垂直搜索引擎是針對某一行業的專業搜索引擎,是搜索引擎的分支和延伸。相較于通用搜索引擎,提供深度、準確性更高的搜索服務。垂直搜索引擎的應用方向很多,比如企業庫搜索、供求信息搜索、購物搜索、房產搜索、人才搜索、mp3搜索、圖片搜索、工作搜索、交友搜索等,幾乎各行各業、各類信息都可以進一步細化成各類垂直搜索引擎。

2.1 分詞

分詞是我們在搜索功能中較常聽到的詞匯之一。

分詞就是對一段文本,通過規則或者算法分出多個詞,每個詞作為搜索的最細粒度一個個單字或者單詞。分詞的目的主要是為了搜索,尤其在數據量大的情況下,分詞的實現可以快速、高效的篩選出相關性高的文檔內容。

搜索過程中,分詞由搜索引擎內的分詞器,執行完成。分詞器作用于用戶的輸入內容、以及文檔索引建立的這兩部分。前臺文本內容的輸入,來源于不同用戶的需求;索引數據的來源可通過業務需求決定,自定義設置。

如在垂類電商業務中,我們構建索引的原始數據,便可以是商品的標題、詳情、類目信息、品牌信息等,或者是從后臺建立新的字段,分詞過濾后進入索引區,等待檢索。

2.1.1 分詞流程

用戶在搜索引擎界面輸入關鍵詞,點擊“搜索”按鈕之后,搜索引擎程序開始對搜索詞進行以下處理:分詞處理,根據情況對整合搜索是否需要啟動進行判斷、找出錯別字和拼寫中出現的錯誤、把停止詞去掉。

分詞的實現主要依賴分詞器。分詞器為分析器三大構成部件之一,文檔的分詞還會涉及到分詞前的預處理,以及分詞后的過濾操作。分析器的三構件分別為:字符過濾器、分詞器、過濾器,文本在三者間流轉順序依次為字符過濾器—分詞器—過濾器。

原始文本在分詞之前,會流轉到字符過濾器,將原始的文本作為字符流接受,通過增、減、改的方式改變字符流。處理后的流進入分詞器,按照特定規則、算法執行分詞操作,最后通過不同的過濾器進行處理。一個分析器中可以有0個或多個字符過濾器和過濾器,僅有一個分詞器。

當你按下搜索鍵時,發生了什么?(上)

  1. 字符過濾器:字符過濾器用于字符流傳遞到分詞器之前對它進行預處理,字符過濾器支持數字的轉換;將所有指定的字符串替換成特定的字符串;將任意字符轉換為置頂字符。
  2. 分詞器:不同語言分詞規則有所差異,英文分詞、中文分詞、拼音分詞的分詞策略各不相同。英文分詞可以根據空格將單詞分開,中文分詞比較復雜,可以采用機器學習算法來分詞。
  3. 過濾器:將切分的單詞進行加工。如大小寫轉換、去掉停用詞(如“最”、“因為”、“和”)等,該過濾器不同于檢索時過濾器。

當你按下搜索鍵時,發生了什么?(上)

2.1.2 分詞的算法

現有的分詞包括有英文分詞、中文分詞、拼音分詞。中文分詞與英文分詞有所區別,中文分詞存在更多的難點和歧義點,不同分詞策略對文檔的召回率和精確率影響較大。

英文單詞與單詞之間,在輸入時就會通過空格、逗號、句號去隔開,較好的去識別。而中文由字和字構成詞,由詞匯構成句子。如何去合理切分,且可以精確傳達用戶本意、需求,是中文分詞的難點。拼音分詞與中文分詞的結合,更全面地處理了用戶簡寫、誤輸入等使用場景。

拼音分詞可以用來分析字詞的全拼、首字母全拼、字詞的完整拼寫等,可以進行自定義的設置。拼音分詞配合中文分詞,完整關鍵詞的過濾流程,達到高效分詞的目的。

中文分詞算法主要分為三大類,基于詞典的分詞、基于統計的分詞、基于有序標注的分詞。

當你按下搜索鍵時,發生了什么?(上)

不同的分詞策略要適應于各自的業務場景,可能有些業務場景需要分詞的精度大于速度,有些場景要求速度大于精度,因此在理解分詞原理的基礎上,如何去配合業務的需求,高效地實現分詞功能,這些都給算法工程師提出了更高的要求。

2.1.3 分詞的使用

在搜索過程中,分詞器使用于文檔的索引流程以及用戶輸入文本的檢索流程中,需注意的是索引流程和檢索流程中所使用的分詞器需一致。

  • 索引使用:原始文本預處理后,使用分詞器將文檔內容切分為單個字詞;
  • 檢索使用:用戶輸入文本對象,分詞器進行分詞處理,分詞后建立query對象,執行檢索操作。

當你按下搜索鍵時,發生了什么?(上)

中文分詞相較于英文分詞,無空格作為詞之間的分隔符,且中文詞語組合復雜,歧義較多,一直為自然語言處理中的難點。

2.2 構建索引

索引是對數據庫表中一列或多列的值進行排序的一種輔助型數據結構,構建索引有助于對表中數據的查找和排序,檢索時數據庫系統不必掃描整個表,而是直接定位到符合條件的記錄,大大加快了查詢速度,達到了以下目的:

  1. 快速:加快檢索數據
  2. 篩選:盡快找到符合限制條件的記錄

構建索引大大縮短查詢時間的同時,也帶了了一定的成本,創建和維護索引都需要時間成本和空間成本,隨著數據量的增加其所占用的物理存儲空間也會隨之增大。數據量大、經常使用查詢功能,且需要排序優化的業務情境下,索引的建立還是很有必要的。

索引的構建,主要有倒排序索引和正排序索引。倒排序索引是對關鍵詞進行索引,以求快速得到匹配文檔集;正排序索引對文檔進行索引,方便于排序、過濾、匯總。倒排序索引和正排序索引是搜索引擎的重要數據結構,之后檢索等的操作都建立在此基礎上。

2.2.1 倒排序索引

1)倒排序索引介紹

倒排索引(Inverted index),也常被稱為反向索引、置入檔案或反向檔案,是一種索引方法,被用來存儲在全文搜索下某個單詞在一個文檔或者一組文檔中的存儲位置的映射。

索引是為了更快找到文檔的一種數據結構,相當于圖書中的目錄,用戶根據目錄可以快速找到所需內容。倒排索引不是根據目錄或編號來定位內容,它是通過文檔中的某個字、詞語而找到文檔的索引類型,通過立即的單詞標示迅速獲取結果。倒排索引的建立和維護較復雜,但查詢快速、便捷、高效,是文檔檢索系統中最常用的數據結構。

當你按下搜索鍵時,發生了什么?(上)

2)倒排索引的構建流程

倒排序索引的構建有兩個表格至關重要。表一為文檔編號及文檔內容,表二為分詞后關鍵詞及對應文檔編號。數據的存儲時,將表二拆分為兩個數據結構,用于存儲倒排文件以及關鍵詞及其偏移量。

搜索最基礎、簡單的流程便是外部關鍵詞輸入,表二中查詢到關鍵詞出現的位置以及文檔編號,最終輸出結果文檔內容。

當你按下搜索鍵時,發生了什么?(上)

2.2.2 正排序索引

正排索引(forward index),以文檔編號為關鍵字,表中記錄文檔中每個字的位置信息,查找時掃描表中每個文檔中字的信息直到找出所有包含查詢關鍵字的文檔。正排序索引的查詢往往滿足每個文檔有序、頻繁的全文查詢和每個單詞在校驗文檔中驗證這樣的查詢。

正排索引可以查詢匯總到關鍵字的屬性、相關的頻次以及位置等,適用于一些過濾操作以及匯總操作。

當你按下搜索鍵時,發生了什么?(上)

比如說搜索 “干飯”時,可以快速查詢出包含“干飯”這個關鍵字的文檔,有利于關鍵字相關性和權重的計算。正排序索引,搜索“干飯”時,搜索引擎需要檢索每一個文檔中的每一個關鍵詞,正排索引適合于一些區間的索引。在電商的搜索中,有較多的過濾、篩選的選項,因此同時引入正排索引和倒排索引還是很必要的。

2.3 檢索

未完待續…

【相關閱讀】

當你搜索時,發生了什么?(中)

當你搜索時,發生了什么?(下)

本文主要是從小白的角度嘗試理解搜索引擎的工作原理及工作流程。初次涉及搜索領域,文中概念、措辭如有偏差,請留言指教,將虛心學習更正。

 

本文由 @大倉鼠 原創發布于人人都是產品經理。未經許可,禁止轉載

題圖來自Unsplash,基于CC0協議

給作者打賞,鼓勵TA抓緊創作!

1人打賞

文章若有侵權請來信告知:品牌行銷策略,產品行銷與設計,各類型行銷推廣案例分享-品牌行銷點點讚 » 當你搜索時,發生了什么?(上)