電商商品搜索:需求方案和實現原理(“搜索產品經理”的傳送門)


閱讀本文10分鐘,約3.8K字。
本文借助案例,分析了電商搜索商品的實現原理。
產品就能理解搜索做到什么程度、要準備哪些工作,以及輸出合格的PRD,并“指導”開發(fā)人員實現。
目錄
1、從一個bug說起
2、C端商城高并發(fā)搜索
3、商城搜索的一般機制
4、ES的引入,解決了什么痛點
5、總結和意義





一類是通過中間服務ES這種搜索引擎中間件,進行緩存和查詢支持。
另一類是接口,拉取數據庫的商品資料;

1、搜索引擎的運算
這里最麻煩的是,命中的邏輯機制,也就是搜索的運算。所以很多架構中獨立出來一個搜索服務,專門為C端提供快速的運算。
比較成熟的方法很多我這里舉兩個例子:一個是分詞匹配,一個是逐字匹配。
搜索的時候,輸入關鍵詞。一般采用的是分詞搜索技術。ES自帶這種技術插件。

先初始化:
應用場景:
總結:
注意:
過濾詞庫:
還有不少關鍵字比較敏感,比如涉黃、涉賭等等,這些關鍵字我們通常都會屏蔽,不進行數據搜索。
要屏蔽對應的關鍵字,后臺就需要維護一套非法詞庫,當用戶輸入的關鍵字在非法詞庫中就不再做搜索,以減輕服務器壓力。
網上一般有現成的詞庫可以直接導入系統,不滿足的后臺再進行維護擴充。
其他輔助詞庫
比如錯誤詞糾正、還可以做近義詞庫:比如“維生素”=V,以及大小寫字母通用等。推薦詞庫等。
逐字匹配:
(1)用什么數據庫好?(mysql、sybase、oracle、達夢、神通、mongodb、hbase…) ; (2)如何解決單點故障;(lvs、F5、A10、Zookeep、MQ) ; (3)如何保證數據安全性;(熱備、冷備、異地多活) ; (4)如何解決檢索難題;(數據庫代理中間件:mysql-proxy、Cobar、MaxScale等;) ; (5)如何解決統計分析問題;(離線、近實時)
當我們的數據達到PB級別時,按照每個節(jié)點96G內存計算,在內存完全裝滿的數據情況下,我們需要的機器是:1PB=1024T=1048576G,節(jié)點數=1048576/96=10922個。 實際上,考慮到數據備份,節(jié)點數往往在2.5萬臺左右。成本巨大決定了其不現實!

后端產品體系對技術方案的依賴,需要產品經理理解這種機制。
產品經理需協助溝通ES收錄的字段范圍,需要在PRD中說明。
在需求方案和刷數據等環(huán)節(jié),避免與開發(fā)產生過大的脫節(jié)。

評論
圖片
表情
