電商后臺設計——搜索

16 評論 49168 瀏覽 459 收藏 13 分鐘

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

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

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

一、查詢種類

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

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協議。

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

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

題圖來自Unsplash,基于 CC0 協議

該文觀點僅代表作者本人,人人都是產品經理平臺僅提供信息存儲空間服務。

更多精彩內容,請關注人人都是產品經理微信公眾號或下載App
評論
評論請登錄
  1. 寫的很好,說的很全面,頂你大佬

    來自云南 回復
  2. 這種開源的電商后臺有推薦的嗎

    來自重慶 回復
  3. 大佬,能看一下你的原型嗎~~~~

    來自重慶 回復
  4. 想請教一下,分詞之后應該是先匹配出結果集,再對結果集進行排序?能不能說一下匹配規則的設計?

    回復
  5. 收藏了,讀完有個困惑想和前輩交流。第8項搜索推薦詞這里,搜索框輸入“手機”后系統自動給的推薦詞“手機自營”“手機支架”,是按照什么邏輯給出的呢?不太理解搜索詞后綴的擴展機制,是只要該推薦詞對應搜索統計的商品數量越多,系統就越優先推薦該詞嗎?

    來自廣東 回復
    1. 這個推薦詞有三種實現方法:1.通過上面講的第三個功能,現將推薦詞維護到數據庫里,搜索的時候先從這里獲取,這個通常在做推廣的時候用的比較多;2.通過商品搜索服務器來實現,觀察一下大平臺的商品名稱,名稱里面是不是有什么信息,錄入商品的時候,服務器就會做關鍵字處理,后期的搜索就會依賴這些關鍵字,最后講這些結果匯總統計就是推薦詞了

      回復
    2. 謝謝詳細解答??,明白很多

      來自廣東 回復
    3. 期待《權重設計》??!

      來自廣東 回復
  6. 求分享 權重設計??

    回復
  7. 您好,向您請教2個問題:1.落地頁是跳轉頁面的鏈接嗎?2.權重值能否解釋一下?謝謝?。?!

    來自江蘇 回復
    1. 落地頁是跳轉頁面類型,平臺里面一般有多種頁面:首頁、搜索頁、專題頁、商戶主頁等,跳轉參數里面可以填寫具體的跳轉地址和參數。權重值就和排序一樣,值越高,越靠前!

      來自北京 回復
  8. 圖片識別那里感覺不止是文字吧?再用淘寶的時候,界面上會先圈定你要搜索的東西,然后會找到和你圖片上一模一樣的商品,這個是怎么做到的呢?求答疑

    來自廣東 回復
    1. 我們有人眼看到一張圖片后,會分析出圖片中有哪些內容,如有鞋子、價格、文案等,然后你想找相似的,就需要根據大腦想到的關鍵字去搜索。圖片識別差不多也是一樣的,不過這個內容是由機器識別的,之后也會返給你關鍵字,然后再由這些關鍵字去產品庫里面查詢!

      來自北京 回復
    2. 大佬,拜讀過本文后,思路被捋順不少,感謝!
      但是,關于圖片搜索這塊的邏輯解釋,本人不太認同。
      如果按照你所講述的邏輯去實現的話,勢必需要先去維護一套圖片轉文字的AI識別系統,但是這種AI的輸出值,永遠也不可能是一個且穩定的值,也即是說,一張圖片在一次識別中,會輸出多組文字,多次識別輸出的可能是多組文字,甚至關聯性都不大,而且,這個圖片轉文字的AI識別系統還不同于OCR,不是簡單的【將圖片上的文字識別為字符串】,而是【將圖片的示意識別為一段文字型的描述性語言】,這個在技術難度和人工成本(數據標注)上,遠遠超過絕大多數公司可承擔的范圍。簡單來說,目前可以將一張【椅子.jpg】識別為【椅子】,更近一步可識別為【一個紅色的斜著放的三只腳的椅子】,但是永遠也無法完整的表達圖片作者的意圖,【阿瑪尼牌春季限量款紅色三腳椅子】,那么就會導致識別準確率低下,搜索失真。
      ps:關于【永遠也無法完整的表達圖片作者的意圖】的解釋: 一方面是圖片所包含信息太過復雜,存在太多信息噪點,另一方面則是會存在強烈的主觀意愿,作為人類都無法完整理解圖片作者的意圖,AI就更不可能了(因為AI需要人為去投喂數據和訓練)
      而我所構想的圖片搜索是,基于圖片本身屬性的搜索,【圖片】->【分類】->【識別圖片特征】->【在圖庫中搜索】->【輸出搜索結果】,基于這個路徑,完全不需要將圖片本身的示意轉換成文字特征,只需要先對圖片進行分類,然后進行特征比對即可,當然,這個方案的成本也很高,也有一定的技術門檻,但是至少是目前的技術和人力水平可以實現的方式。

      以上,請大佬點評。

      來自廣東 回復
    3. 你說的對~ 這個就依賴于機器學習了,直接對圖片進行學習和處理,屬于computer vision (CV)的技術范疇。

      來自北京 回復
  9. 拆分關鍵詞、識別主關鍵詞、整詞搜索、關鍵詞糾錯……

    來自上海 回復