楠木軒

電商後台設計——搜索

由 解洪海 發佈於 科技

編輯導語:我們在進行網上購物時,可以直接利用搜索功能查找想要的商品,十分快捷方便;為了方便我們的更快的找到,搜索後會根據系統內部的邏輯進行查找;本文作者詳細介紹了電商平台的搜索原理以及搜索功能。

電商平台商品成千上萬,為了方便用户快速查找到自己想要的商品,平台中會設置有多種查詢方式,如品類搜索、關鍵字搜索等。

但是無論前台頁面樣式如何改變,系統內部的搜索邏輯其實都是同一套,今天我們就來看看電商平台的搜索原理以及常見的搜索功能要點。

一、查詢種類

如果按照內部邏輯劃分,電商系統中的查詢通常有兩類:特定維度查詢和關鍵字查詢。

1. 特定維度查詢

特定維度僅可查詢由系統指定的部分可屬性,如品類、品牌、價格、性別、材質等,並且用户無法輸入查詢值,僅能選擇查詢值。

由於這些數據在系統內部都維護有基礎數據,並且保存在指定的字段中,所以對它們的查詢相對比較簡單。

用户在選中對應選項時,可以獲得對應的唯一ID,之後根據ID查詢相應字段獲得結果,查詢相對比較準確。

2. 關鍵字查詢

整個搜索功能最重要的入口,允許用户隨意輸入要查詢的關鍵字,通常僅有一個查詢關鍵字長度限制。

相對於特定維度查詢,關鍵字查詢相對比較複雜,下圖是搜索的原理圖,下面來一一進行分析。

二、邏輯層操作

當用户提交了查詢關鍵字後,系統會將關鍵字交給搜索邏輯處理,邏輯層會進行一下幾步操作:

1. 非法詞過濾

由於關鍵字查詢功能是對用户開放的,所以用户輸入什麼內容我們是不可控的。

我們在項目排查時經常會發現一些五花八門的關鍵字,其中有不少關鍵字比較敏感,比如涉黃、涉賭等等,這些關鍵字我們通常都會屏蔽,不進行數據搜索。

要屏蔽對應的關鍵字,後台就需要維護一套非法詞庫,當用户輸入的關鍵字在非法詞庫中就不再做搜索,以減輕服務器壓力。

網上一般有現成的詞庫可以直接導入系統,不滿足的後台再進行維護擴充。

2. 錯誤詞糾正

在輸入查詢關鍵字時,用户可能會輸入成拼音、或者錯別字,如用户本意要輸入“阿迪達斯”,實際輸入成“阿迪斯”,但是結果依然能返回和“阿迪達斯”匹配的數據。

這是因為邏輯中有一套糾錯詞處理,當系統對比有錯誤時,會進行糾正處理。

同樣後台也需要維護了一套糾錯詞庫,當用户輸入的關鍵字如果在糾錯詞庫中,系統會自動將錯誤關鍵字替換為設置好的關鍵字;如:阿迪斯->阿迪達斯;阿達斯->阿迪達斯,之後查詢實際採用的是轉換後的關鍵字。

3. 特定跳轉

有時我們在電商平台上輸入查詢關鍵字,會發現部分關鍵字結果不會跳轉到結果列表頁,而是跳轉到一個商家店鋪主頁或者活動頁;如輸入關鍵字“阿迪達斯”,可能直接就進入到了阿迪達斯旗艦店頁面,也有可能進入阿迪達斯活動專場頁面。

要實現這個功能,後台同樣需要維護一套跳轉規則映射庫;當用户的搜索關鍵字與規則庫中的關鍵字匹配時,則返回規則所指定的跳轉路徑,前端頁面直接跳轉過去——通常這個跳轉規則是有時間限定的。

4. 商品搜索

當用户輸入的查詢關鍵字通過非法詞過濾、糾錯詞糾正、特定跳轉匹配後,依然沒有匹配結果,這時系統會將關鍵字交給商品搜索服務器。

搜索服務器首先會對關鍵字進行分詞處理,然後再根據分詞進行商品查詢,並根據權重規則獲得商品權重值,之後再進行權重值排序,最後返回查詢結果。

在商品搜索中有三個非常重要的功能:分詞、權重、以及搜索維度。

分詞:分詞是將一個比較長的關鍵字拆分成多個合理的比較短的關鍵字(如:阿迪達斯板鞋->阿迪達斯、板鞋、鞋);説起來只是簡單的一句話,但是能做出一個好的分詞項目並非易事,有興趣的同學可以自己搜索中分分詞原理,這裏就不多説。項目中我們通常會引用第三方的分詞軟件獲得分詞,之後再去商品服務器中去查詢數據並將結果展示出來。

權重:權重是衡量某一指標的重要程度,在電商平台裏都是各家的商業機密,網上公開的資料也是少之又少;一個商品的權重高低,直接決定着商品排名情況,當然也就影響着銷售額了;下一篇《權重設計》我會單獨介紹電商平台是如何設計的。

需要注意的是上面提到的搜索服務器不是常見的關係型數據庫(如mysql),而是全文檢索服務器(如solr),一般的全文檢索服務器也自帶有分詞功能,滿足中小型電商的分析和搜索是沒有問題的。

搜索維度:也就是用户可以通過哪些屬性對商品進行搜索; 其中基礎屬性中的品牌、品類、價格都會參與搜索,還有特殊屬性中後台明確規定參與搜索的屬性(如果忘記了可以查看《屬性管理》篇)。

商品搜索服務器會根據需要參與搜索的屬性,對查詢出的商品信息按各屬性進行分組統計,然後由代碼邏輯層進行數據整理,再由前端進行展示,最終就形成了搜索列表的樣式。

不知道大家在JD上搜索時有沒有發現,如果輸入一個覆蓋品類比較大的關鍵字,最終的返回結果只會是同一品類的商品。

如輸入查詢關鍵字【牛】,和牛相關的商品品類有牛肉、牛仔褲、牛油果等等,實際結果只有肉類產品。

這個主要就是不同品類的商品屬性不同,無法做到公用的效果,業務上需要作出一些取捨;所以大家平時設計產品時,需要多和技術聊聊,能達到的效果儘量實現,不能話就需要作出一些妥協。

以上就是一個搜索功能的核心要點,一個看似簡單的搜索框,其實內部是需要多個功能進行協同完成的;下次給技術要工作週期時,可不能直説我只想要個框,你就要幾周時間,以免被人笑話。

上面這幾個核心要點每個也是一個功能要點,都需要單獨維護;除此之外還有一些功能,具體是否使用大家需要根據自己的業務來決定。

5. 搜索統計

做為平台重要的數據入口,對用户搜索詞的統計功能有多重要就不在多説了。

通過對搜索詞數據的統計,可以讓運營人員直觀的瞭解到用户對品類、品牌、價格的青睞趨勢,為後期的活動運營、市場預測做好數據指導。

常見的統計維度有以下幾個:

  1. 每日、每週、以及每月的搜索訪問量統計;
  2. 搜索關鍵字的排名統計(組織方式:每日、最近一週、最近一個月、每月);
  3. 各品類、各品牌的搜索排名統計(組織方式:每日、最近一週、最近一個月、每月);
  4. 各品類、各品牌排名佔比(組織方式:每日、最近一週、最近一個月、每月);
  5. 各價格區間的的搜索排名統計(組織方式:每日、最近一週、最近一個月、每月)。
6. 首頁推薦詞

在電商首頁,平台為了推廣活動,會在的搜索框下面顯示一些熱門搜索詞或者推薦搜索詞,而這些搜索詞通常都會跳轉到指定的專題或者活動頁,以提升活動曝光率。

在上面講解的【特定跳轉】功能上增加一個首頁推薦詞字段加以區分就能實現這個功能。

7. 搜索歷史

當用户選中搜索框時,下拉列表裏面會出現之前的搜索詞,方便用户快捷選擇。

這個只需要在用户提交搜索詞時,將搜索詞保存起來,之後再調取出來即可,功能比較簡單。

8. 搜索推薦詞

當用户選中搜索框並輸入查詢關鍵字,下拉列表中會出現相似的一些推薦詞,並且推薦詞後面有相應的商品數量。

這個功能是通過調用【商品搜索】功能的統計接口,實時獲得的數據並顯示前幾位的數據。

9. 輸入形式

通常查詢關鍵字搜索默認的輸入形式是文字形式,現在由於技術的發展,有實力的電商平台也引入了圖片輸入和語音輸入方式。

其實內部邏輯一點都沒有變,只是在原始的文字輸入之上有加了一層識別組件,通過識別組件先將圖片內容或者語音內容轉為文字,再由文字進行搜索查詢。

以上就是搜索功能的內容,還有遺漏的地方歡迎大家下方留言補充!

作者:JackLiu;個人微信公眾號: 揚帆去遠航(ID:Jackai_liu)

本文由 @Jack 原創發佈於人人都是產品經理,未經作者許可,禁止轉載。

題圖來自Unsplash,基於CC0協議。