POST TIME:2018-12-03 21:29
之前的文章探討過用戶端背后系統的邏輯和結構情況,后續我會考慮逐步解構每個相關系統的情況。今天跟大家聊一聊搜索系統,搜索系統在所有電商系統里面復雜度和難度是可以排的上前列的。關于算法方面介紹的文章很多,這里不做贅述,只解構下搜索系統的基本邏輯和實現。對于產品來說不免難免溝通時“露怯”,了解搜索系統的基本知識和結構是有須要的。
搜索系統的“基本介紹”搜索系統,顧名思義提供大數據查找篩選的系統功能。在電商和O2O領域作為一個主要的流量入口起到了至關重要的作用。
“基本介紹”:指標對于搜索來說,主要的指標為準確率和召回率。我們以下圖為例解釋下什么叫做準確率和召回率。
圖中整體的部分為所有商品數據的全集,其中包孕不相關和相關的內容。
準確率:搜索結果中相關內容的比例,即圖中A的部分召回率:搜索結果占整體內容的比例,即A+B由此我們可以看出,最完美的結果是A足夠大且B足夠小,但實際實現中會發現兩個指標是相反的(召回率越高準確率會越低)。需要通過規則來平衡這塊部分。
“基本介紹”:基礎結構搜索系統主要的組成部分有幾塊:
切詞邏輯詞庫基礎信息加權規則排序展示邏輯整體流程如下
名詞解釋:
query:是查詢的意思,這里指用戶在搜索框輸入的內容。切詞:又叫分詞,是按照詞庫/詞典將一段文本進行切分以便機器識另外過程。詞庫:指用于切詞的詞庫。加權:將檢索結果集根據必然的維度、規則進行打分就叫做加權。索引:商品信息存儲時需要建立索引,索引作為每個商品的標識便利在大數據量的情況下快速查找篩選。“基本介紹”:應用場景搜索的應用一般有兩種:全文檢索和suggest。其中suggest的規則比全文檢索要簡單一些。辦事上由于suggest一般支持模糊查詢的情況,所以要考慮辦事上是否要獨立還是公用一套。
搜索系統的“工作履歷”:流程解構切詞/詞庫切詞,又叫分詞。用于將用戶輸入的無結構化字符釀成機器可識另外詞組。市面上有很多成熟的切詞組件。切詞邏輯有很多種,按照字符、概率等,電商和O2O一般使用字符串切詞的方式處理。關于切詞的方法最基礎的有最大正相匹配、最大逆向匹配、雙向匹配等,具體的內容可以百度查詢。切詞工具按照詞庫中的詞典進行切分,一般開源的切詞工具都有默認的詞庫和自定義詞庫兩種情況。用戶可通過添加自定義詞庫來完善增補。
這里面需要強調的是切詞時候的過濾,尤其生鮮類非標品情況下特別需要注意。
單字詞、助詞之類的是否要過濾掉。如米、面、油等別號情況的處理,尤其是生鮮類。好比在北京叫油菜,在上海叫上海青,在重慶叫漂兒白檢索結果集按照切出的詞語進行匹配,匹配到的商品信息集合為檢索結果集。結果集需要做檢索、過濾、標記三個步驟。
檢索
檢索項包孕但不限于:
商品名稱商品標題、副標題商品描述商品參數、規格商品品牌(生鮮副食品類尤為重要,好比五得利面粉、鵬程五花肉)商品品類(一級類、二級類)別號關聯商品促銷類型成熟的電商系統不但僅實現用戶的基本商品檢索,還會按照query進行意圖分析來進行query轉換。以生鮮電商舉例,當用戶搜索“豬肉”時,用戶希望獲得的不是含有豬肉詞語的商品,而是豬肉的各個部位、豬肉級別等。這時應該轉化為后臀尖、前臀尖、里脊,一級白條等詞語進行檢索,而不是匹配豬肉。意圖分析主要有兩個方面
行為模式分析用戶畫像分類過濾
獲取的結果集需要經過去重、過濾的處理。此部分行為可以在加權打分后進行處理,也可以擺設在初選結果后處理。
同一個商品被多個詞語命中需要去重現實中的電商搜索可能會按照差別的場景構建所謂的“小搜索”,如根據類目、根據品類、根據定制化場景等。所以針對差別的搜索場景可能會有單獨的過濾去重條件,也可以在構建數據的時候使用差別的庫進行處理。O2O場景需要根據必然區域概念(城市、商圈等)進行過濾售罄商品需要過濾下線商品需要過濾標記
在檢索完成后需要對數據進行標記,以便后續做加權時使用。此步也可以在做加權處理的時候同步進行。
加權加權的目的是為了按照模型確定結果集各個商品的排序優先級。加權的維度有很多,按照差別的場景考慮也會有所區別。
加權因子主要分為幾個維度:
相關度商業化因素個性化因素報答因素數據模型統計相關度