編輯導語:我們在進行網上購物時,可以直接利用搜索功能查詢想要的商品,十分快捷方便;為了方便我們的更快的找到,搜尋後會根據系統內部的邏輯進行查詢;本文作者詳細介紹了電商平臺的搜尋原理以及搜尋功能。
電商平臺商品成千上萬,為了方便使用者快速查詢到自己想要的商品,平臺中會設定有多種查詢方式,如品類搜尋、關鍵字搜尋等。
但是無論前臺頁面樣式如何改變,系統內部的搜尋邏輯其實都是同一套,今天我們就來看看電商平臺的搜尋原理以及常見的搜尋功能要點。
一、查詢種類如果按照內部邏輯劃分,電商系統中的查詢通常有兩類:特定維度查詢和關鍵字查詢。
1. 特定維度查詢特定維度僅可查詢由系統指定的部分可屬性,如品類、品牌、價格、性別、材質等,並且使用者無法輸入查詢值,僅能選擇查詢值。
由於這些資料在系統內部都維護有基礎資料,並且儲存在指定的欄位中,所以對它們的查詢相對比較簡單。
使用者在選中對應選項時,可以獲得對應的唯一ID,之後根據ID查詢相應欄位獲得結果,查詢相對比較準確。
2. 關鍵字查詢整個搜尋功能最重要的入口,允許使用者隨意輸入要查詢的關鍵字,通常僅有一個查詢關鍵字長度限制。
相對於特定維度查詢,關鍵字查詢相對比較複雜,下圖是搜尋的原理圖,下面來一一進行分析。
二、邏輯層操作當用戶提交了查詢關鍵字後,系統會將關鍵字交給搜尋邏輯處理,邏輯層會進行一下幾步操作:
1. 非法詞過濾由於關鍵字查詢功能是對使用者開放的,所以使用者輸入什麼內容我們是不可控的。
我們在專案排查時經常會發現一些五花八門的關鍵字,其中有不少關鍵字比較敏感,比如涉黃、涉賭等等,這些關鍵字我們通常都會遮蔽,不進行資料搜尋。
要遮蔽對應的關鍵字,後臺就需要維護一套非法詞庫,當用戶輸入的關鍵字在非法詞庫中就不再做搜尋,以減輕伺服器壓力。
網上一般有現成的詞庫可以直接匯入系統,不滿足的後臺再進行維護擴充。
2. 錯誤詞糾正在輸入查詢關鍵字時,使用者可能會輸入成拼音、或者錯別字,如使用者本意要輸入“阿迪達斯”,實際輸入成“阿迪斯”,但是結果依然能返回和“阿迪達斯”匹配的資料。
這是因為邏輯中有一套糾錯詞處理,當系統對比有錯誤時,會進行糾正處理。
同樣後臺也需要維護了一套糾錯詞庫,當用戶輸入的關鍵字如果在糾錯詞庫中,系統會自動將錯誤關鍵字替換為設定好的關鍵字;如:阿迪斯->阿迪達斯;阿達斯->阿迪達斯,之後查詢實際採用的是轉換後的關鍵字。
3. 特定跳轉有時我們在電商平臺上輸入查詢關鍵字,會發現部分關鍵字結果不會跳轉到結果列表頁,而是跳轉到一個商家店鋪主頁或者活動頁;如輸入關鍵字“阿迪達斯”,可能直接就進入到了阿迪達斯旗艦店頁面,也有可能進入阿迪達斯活動專場頁面。
要實現這個功能,後臺同樣需要維護一套跳轉規則對映庫;當用戶的搜尋關鍵字與規則庫中的關鍵字匹配時,則返回規則所指定的跳轉路徑,前端頁面直接跳轉過去——通常這個跳轉規則是有時間限定的。
4. 商品搜尋當用戶輸入的查詢關鍵字透過非法詞過濾、糾錯詞糾正、特定跳轉匹配後,依然沒有匹配結果,這時系統會將關鍵字交給商品搜尋伺服器。
搜尋伺服器首先會對關鍵字進行分詞處理,然後再根據分詞進行商品查詢,並根據權重規則獲得商品權重值,之後再進行權重值排序,最後返回查詢結果。
在商品搜尋中有三個非常重要的功能:分詞、權重、以及搜尋維度。
分詞:分詞是將一個比較長的關鍵字拆分成多個合理的比較短的關鍵字(如:阿迪達斯板鞋->阿迪達斯、板鞋、鞋);說起來只是簡單的一句話,但是能做出一個好的分詞專案並非易事,有興趣的同學可以自己搜尋中分分詞原理,這裡就不多說。專案中我們通常會引用第三方的分詞軟體獲得分詞,之後再去商品伺服器中去查詢資料並將結果展示出來。
權重:權重是衡量某一指標的重要程度,在電商平臺裡都是各家的商業機密,網上公開的資料也是少之又少;一個商品的權重高低,直接決定著商品排名情況,當然也就影響著銷售額了;下一篇《權重設計》我會單獨介紹電商平臺是如何設計的。
需要注意的是上面提到的搜尋伺服器不是常見的關係型資料庫(如mysql),而是全文檢索伺服器(如solr),一般的全文檢索伺服器也自帶有分詞功能,滿足中小型電商的分析和搜尋是沒有問題的。
搜尋維度:也就是使用者可以透過哪些屬性對商品進行搜尋; 其中基礎屬性中的品牌、品類、價格都會參與搜尋,還有特殊屬性中後臺明確規定參與搜尋的屬性(如果忘記了可以檢視《屬性管理》篇)。
商品搜尋伺服器會根據需要參與搜尋的屬性,對查詢出的商品資訊按各屬性進行分組統計,然後由程式碼邏輯層進行資料整理,再由前端進行展示,最終就形成了搜尋列表的樣式。
不知道大家在JD上搜索時有沒有發現,如果輸入一個覆蓋品類比較大的關鍵字,最終的返回結果只會是同一品類的商品。
如輸入查詢關鍵字【牛】,和牛相關的商品品類有牛肉、牛仔褲、牛油果等等,實際結果只有肉類產品。
這個主要就是不同品類的商品屬性不同,無法做到公用的效果,業務上需要作出一些取捨;所以大家平時設計產品時,需要多和技術聊聊,能達到的效果儘量實現,不能話就需要作出一些妥協。
以上就是一個搜尋功能的核心要點,一個看似簡單的搜尋框,其實內部是需要多個功能進行協同完成的;下次給技術要工作週期時,可不能直說我只想要個框,你就要幾周時間,以免被人笑話。
上面這幾個核心要點每個也是一個功能要點,都需要單獨維護;除此之外還有一些功能,具體是否使用大家需要根據自己的業務來決定。
5. 搜尋統計做為平臺重要的資料入口,對使用者搜尋詞的統計功能有多重要就不在多說了。
透過對搜尋詞資料的統計,可以讓運營人員直觀的瞭解到使用者對品類、品牌、價格的青睞趨勢,為後期的活動運營、市場預測做好資料指導。
常見的統計維度有以下幾個:
- 每日、每週、以及每月的搜尋訪問量統計;
- 搜尋關鍵字的排名統計(組織方式:每日、最近一週、最近一個月、每月);
- 各品類、各品牌的搜尋排名統計(組織方式:每日、最近一週、最近一個月、每月);
- 各品類、各品牌排名佔比(組織方式:每日、最近一週、最近一個月、每月);
- 各價格區間的的搜尋排名統計(組織方式:每日、最近一週、最近一個月、每月)。
在電商首頁,平臺為了推廣活動,會在的搜尋框下面顯示一些熱門搜尋詞或者推薦搜尋詞,而這些搜尋詞通常都會跳轉到指定的專題或者活動頁,以提升活動曝光率。
在上面講解的【特定跳轉】功能上增加一個首頁推薦詞欄位加以區分就能實現這個功能。
7. 搜尋歷史當用戶選中搜索框時,下拉列表裡面會出現之前的搜尋詞,方便使用者快捷選擇。
這個只需要在使用者提交搜尋詞時,將搜尋詞儲存起來,之後再調取出來即可,功能比較簡單。
8. 搜尋推薦詞當用戶選中搜索框並輸入查詢關鍵字,下拉列表中會出現相似的一些推薦詞,並且推薦詞後面有相應的商品數量。
這個功能是透過呼叫【商品搜尋】功能的統計介面,實時獲得的資料並顯示前幾位的資料。
9. 輸入形式通常查詢關鍵字搜尋預設的輸入形式是文字形式,現在由於技術的發展,有實力的電商平臺也引入了圖片輸入和語音輸入方式。
其實內部邏輯一點都沒有變,只是在原始的文字輸入之上有加了一層識別元件,透過識別元件先將圖片內容或者語音內容轉為文字,再由文字進行搜尋查詢。
以上就是搜尋功能的內容,還有遺漏的地方歡迎大家下方留言補充!
作者:JackLiu;個人微信公眾號: 揚帆去遠航(ID:Jackai_liu)
本文由 @Jack 原創釋出於人人都是產品經理,未經作者許可,禁止轉載。
題圖來自Unsplash,基於CC0協議。