1. 程式人生 > >劈開迷霧,蘑菇街電商搜尋架構及搜尋排序實現

劈開迷霧,蘑菇街電商搜尋架構及搜尋排序實現

前言

蘑菇街的願景是讓一半人類更幸福,而讓每位女性使用者能便捷的找到心儀的商品則是搜尋系統的願景。作為重要的流量入口,搜尋系統一直承擔著關鍵的職責:優化商家流量分配和提升使用者體驗,讓最優質和最符合使用者個性化需求的商品排在前面。隨著集團品質升級戰略的深化,演算法排序的不斷升級,對搜尋系統也提出了更高的要求。

本文會先介紹蘑菇街目前的整體搜尋架構,之後以一個線上請求來細化描述搜尋排序實現。

現有搜尋架構

目前的架構圖如下所示: 


整體架構從大的層面可以分為兩部分:線上和離線。線上部分主要是涉及線上請求的系統(運維平臺和排序平臺是的系統,但主要服務線上系統,所以也劃分在線上部分),包括業務層、投放層、精排層、引擎層。離線部分主要是演算法訓練和資料流相關係統(ACM打點、dump等)。

下面介紹下核心系統的功能。

Topn 

topn是搜尋系統的統一入口。向上通過統一的介面和檢索協議對接不同的搜尋業務,業務層只需要關注資料透出結構和來源,不用關注引擎細節和演算法邏輯;向下則對接不同的搜尋引擎和排序系統,這些系統只需關注自身的搜尋及排序邏輯,不需要關心不同的業務接入。同時,topn集成了abtest分流系統及提供演算法配置後臺,使得多個演算法的並行測試和日常上下線非常便捷;另外,通過分組隔離和標準化部署,在可用性和擴充套件性上提供了最大保障。

Abtest

abtest分流系統實現了uuid/hash/人群標籤等多種分流規則,同時也支援自定義分流條件;分層策略能夠讓多層實驗互不干擾。通過統一的實驗控制檯,結合ACM打點資料,能夠實時統計ab資料效果,方便演算法同學進行線上評估。統一的SDK使得有ab需求的業務方整合很方便,目前已覆蓋集團90%以上的流量入口。

QR

QR系統的主要功能是實現query的改寫(Query Rewrite)來擴充套件query。通常使用者輸入的搜尋詞是比較簡單的,會根據演算法的邏輯進行擴充套件,然後帶到引擎中進行召回和計算。典型的改寫功能如切詞、同義義詞擴充套件、類目相關性預測、品牌詞加權等。QR系統實現上也比較靈活,支援演算法的外掛化開發,外掛之間可以根據業務需求靈活組合。

精排系統

精排系統主要支援演算法的個性化排序,以及靈活的演算法業務開發。搜尋引擎主要負責召回粗排結果,而精排則需要載入更多的特徵和更復雜的模型進行排序計算或實時預測。演算法排序業務複雜多變,需要較頻繁地做ab對比實驗,精排通過提供靈活的排序邏輯配置和動態載入機制來支援。實現上精排的底層儲存複用了搜尋引擎的技術,支援高密度的資料儲存和高併發讀取。

搜尋引擎

基於自研的統一底層框架zindex實現的高效能C++搜尋引擎;支援檢索、過濾、統計、排序等標準功能;支援海選和多輪排序,提供外掛化的排序框架,方便演算法同學開發排序演算法;支援靈活的索引結構和召回邏輯等。

UPS

User Profile System,使用者個性化資料儲存系統,包括離線的使用者特徵資料,以及實時的資料特徵(實時點選的商品、實時搜尋詞、實時加購物車等)。主要服務兩大核心業務——搜尋和推薦,提供高效能的使用者特徵資料獲取,用於個性化排序和推薦。新版底層基於搜尋引擎的統一框架實現,目前線上峰值QPS接近10w,單次請求平均rt在3ms內。

引擎運維平臺

提供引擎例項配置、建立、釋出部署、索引構建、服務上下線、監控報警等全流程的運維服務。依託docker虛擬化技術和公司的釋出系統,支援高效的容器化部署和釋出;提供靈活的索引配置和管理;同時提供友好的web控制檯進行操作。

演算法排序平臺

通過統一的視覺化後臺,為演算法同學提供一站式服務,包括快速建立演算法場景、模型、排序策略略、指令碼,以及上線前的評測等。

為演算法同學遮蔽了複雜的線上系統,加快了演算法上線的效率和穩定性。平臺目前已對接推薦和搜尋的多個系統和場景。

dump系統

dump系統的職責是規範和管理搜尋資料流,以統一的方式將上游的資料來源同步到下游的儲存,比如從DB到搜尋引擎。從資料特性和系統需求上,提供三種形式:增量、全量、小全量。增量主要解決實時資料的變更和推送;全量主要提供離線高吞吐的資料構建;而小全量主要解決演算法資料的更新。另外,在資料的可靠性上也提供了有效的保障。

特徵管理平臺

特徵平臺對演算法特徵進行統一的管理,包括規範特徵的定義,演算法訓練特徵生成的統一排程,特徵生成後的統一儲存,特徵的推送上線,特徵校驗和監控等。演算法同學只需專注模型訓練和演算法調優,特徵的上線和複用則交給特徵平臺。

ACM資料採集系統

ACM採集系統主要解決使用者行為資料的埋點、採集、清洗和追蹤,為演算法的模型訓練和實時報表統計提供可靠的資料來源。

實現上通過統一的打點日誌規範(即自定義的ACM規範),在服務端進行拼裝,然後在客戶端進行埋點,之後統一收集到資料倉庫,通過清洗後提供給演算法訓練或者做實時統計。

上面主要介紹了搜尋系統整體架構和核心繫統,看起來可能比較抽象。下面以一個真實的線上請求來詳細闡述排序實現。

線上搜尋流程

在蘑菇街app搜尋框上輸入 “nike”,搜尋請求會經過以下鏈路(如下圖): 

1.topn

topn接收到使用者query,會根據使用者資訊和請求來源等進行判斷,獲取對應的 abtest配置以及後續請求鏈路的配置,比如該請求是否要請求UPS、請求哪個引擎、是否需要精排等 。


線上topn配置示例如下圖所示:


一條典型的配置資訊包括以下內容:

  • 排序code,用於指定搜尋引擎的排序外掛;

  • Abtest配置,這裡我們用了UUID分流方式,指定某一位對應的值即可;

  • SearchEngine配置,會對應不同的業務例項 (比如商品引擎、店鋪引擎);

  • QR配置,是否要請求QR;

  • UPS配置,是否請求UPS以及要獲取的欄位;

  • ReranConf精排配置,用於指定精排的排序外掛和排序模型;

對照上圖的配置,可以清楚知道哪些流量走哪個排序,對應請求後端的哪些系統。

2.QR

QR的目的是擴充套件query以召回更豐富的商品集,不同的query會觸發不同的改寫外掛。可以看下“nike”這個query經過QR做了哪些改寫:


  • nike品牌詞觸發旗艦店加權(商家扶持)。上圖的brankInfo。

  • query類目相關性。上圖的categoryInfo,數字表示對應的類目ID和權重。

  • 同義詞擴充套件。“nike”有同義詞“耐克”。

  • 切詞這裡沒有,因為nike本身就是一個完整的詞。

3.UPS

UPS主要儲存使用者的歷史和實時行為,包括收藏、點選、加購、下單等,這些個性化資訊提供給精排系統做個性化的排序。比如可以獲取使用者最近點選的商品列表,精排系統根據這些點選商品進行相似商品加權。介面提供單個UID+行為的獲取和批量獲取。 比如獲取UID=783207的點選資料,大概結構如下:


4.搜尋引擎

topn在請求QR獲取改寫後的query和UPS獲取使用者個性化資訊後,結合自身的排序配置資訊,拼成最終的query串傳遞給搜尋引擎,做商品召回和粗排。

搜尋引擎的排序是通過排序外掛的方式開放給演算法同學開發的,支援海選和多輪粗排序。topn配置裡的sort=ltr_test_antispam 在引擎中的排序配置如下:


一個演算法(algo)排序對應一輪海選(audition)加多輪粗排(rank):

  • 海選配置的是LTRRanker,是我們基於機器學習的線性排序器(ranker)。一個ranker可以包含多個打分器(scorer)。ranker和scorer的關係圖如下所示,比如我們的線性ranker包含:商品質量分打分器、通用線性模型打分器、文字相關性打分器。多個打分器通過不同的權重進行線性加權生成最終的排序分數。海選的排序和打分邏輯相對通用和簡單,召回效能也高,通常召回的商品數量較大(2w~10w),這些商品再進入到後續的多輪粗排。


  • 粗排配置的是三輪排序:QueryCTRRanker、BrandWeightRanker、AntiSpam,分別是基於query點選率預估的排序、品牌加權排序、反作弊過濾。粗排以鏈式執行,上一輪粗排的結果是下一輪粗排的輸入。粗排的計算邏輯要複雜很多,參與排序的商品量也相應少,排序結果透出給精排系統(不需要做個性化重排序的場景下,結果直接返回給前端),粗排召回量通常在千級別(1000~5000)。

5.精排系統

精排系統主要做個性化重排序以及業務重排序,對應的排序模型和演算法隨業務變化較快,對資料和模型的實時性要求也更高。排序邏輯跟引擎類似,也支援多輪排序,典型的排序如同店打散、類目打散等。

精排系統最終返回topK排序結果給前端,整個線上請求完成。

總結

本文主要介紹了目前蘑菇街搜尋系統的整體架構,以及線上請求鏈路的細化分析。

隨著業務的發展,期間經歷過很多次的迭代,才慢慢進化成現在的體系,不過可預計的將來現有架構也將進一步演變,我們的最終目標高效支援業務和演算法。

本文只是囫圇吐棗,讓大家對搜尋系統有個整體印象,架構中的每個系統都有很多有價值的細節可挖,期待在後續的文章中跟大夥繼續分享。另外,也會講講搜尋架構是如何一步步演變過來的,敬請期待。

來源:公眾號:美麗聯合資料技術

版權申明:內容來源網路,版權歸原創者所有。除非無法確認,我們都會標明作者及出處,如有侵權煩請告知,我們會立即刪除並表示歉意。謝謝。

-END-


相關推薦

劈開迷霧蘑菇搜尋架構搜尋排序實現

前言 蘑菇街的願景是讓一半人類更幸福,而讓每位女性使用者能便捷的找到心儀的商品則是搜尋系統的願景。作為重要的流量入口,搜尋系統一直承擔著關鍵的職責:優化商家流量分配和提升使用者體驗,讓最優質和最符合使用者個性化需求的商品排在前面。隨著集團品質升級戰略的深化,演算法排序的不斷升級,對搜尋系統也提出了更高

蘑菇交易平臺服務架構改造優化歷程

蘑菇街導購時期 業務結構 蘑菇街是做導購起家的,當時所有的業務都是基於使用者和內容這兩大核心展開。那個時候前臺業務主要做的是社交導購,後臺業務主要做的是內容管理。一句話總結就是小而美的狀態,業務相對來也不是很複雜。  當時的技術架構是典型的創業型公司技術架構

雙十一前夜跨境如何解開“真假美猴王”陷阱

跨境電商雙十一前夜,突然想起來了跨境電商和它早前的一個新聞:經國際刑警組織紅色通報全球通緝,在境外潛逃1年3個月後,走秀網CEO紀文泓最終在8月16日被押解入境。而他犯罪的原因很“簡單”:作為跨境電商的走秀網,走私了。結果,網絡上的輿論卻對這位紀文泓報以了不少“同情”,大多都是點贊走秀網是良心電商、不賣假貨情

線上線下聯動小程序…今年雙11“前戲”跟去年有啥不同?

城市 騰訊 阿裏巴巴 聯合 com 零售 解決 app 電影院 年年歲歲“雙11”,歲歲年年“戲”不同。顯然,“新零售”成為今年最大的一個分水嶺。      不論主動出擊,還是被動應戰。2017年是新零售元年,電商巨頭們都非常默契地將今年打造成新零售的閱兵式

辦公室無人貨架的未來是超越的新零售模式

現在 img 餓了麽 改變 特點 bottom 感知 無法 想象 無人貨架有多火?看一組數據,你就知道了。猩便利獲得A1輪3.8億融資,果小美獲得5000萬美元融資,小e微店獲得2億元融資......本周,每日優鮮便利購宣布完成2億美元A+B輪融資。據統計,目前市場上至少有

首個“保稅+社群新零售”專案“豐溯Go”上線運營跨界疊加創新升級

近日,深圳首個“保稅+社群新零售”專案“豐溯Go”上線運營。在順豐優選的方鼎華庭店、南海玫瑰園店、新洲花園店上線運營。據介紹,該模式將賣場從地理位置比較偏僻的保稅區搬到市民居住的社群,海外商品可以憑保出區,市民可以更便利地買到心儀的商品,企業也可以加快貨物和資金的流轉。“

專案day11(商品搜尋功能實現&排序&結果分頁)

今日目標:     完成關鍵字搜尋功能     能夠實現高亮顯示效果     完成查詢分類列表的功能     完成條件過濾構建功能     完成分頁動態

從0到1蘑菇怎樣打破應用運維自動化的技術藩籬?​

作者介紹 白海強(花名:普智),目前在蘑菇街平臺技術部從事應用運維體系和其它建設工作,與團隊一起推進業務應用運維標準化及自動化系統的建設。在加入蘑菇街之前在淘寶任職,負責淘寶商品詳情等業務的運維工作。 演講大綱: 蘑菇街技術架構及運維演進 應用運維體系建設思路 應用運維自動化實踐過程 蘑菇街技術

凡客誠品陳貽泰:一套高實用性基礎架構專治運維各種痛點

作者簡介: 陳貽泰 凡客誠品 前運維部高階經理 負責 IDC 機房和網站業務的技術運營,及內部企業IT的系統網路運維。 從事IT基礎設施方面的工作十多年。 曾在武漢微軟技術中心專門為多種行業、大中小企業做IT規劃和建設;後來加入了凡客誠品,全程深度參與了公司的系統及網路基礎設施的建設。現在領醫創造

【備忘】【No8】大型SpringMVCMybatisRedisSolrNginxSSM分散式專案視訊教程

課程目錄: 01.第一天(專案介紹,搭建maven工程) 02.第二天(框架整合,後臺系統搭建) 03.第三天(實現商品新增) 04.第四天(商品規格實現) 05.第五天(前臺工程搭建、首頁商品類目顯示) 06.第六天(CMS系統) 07.第七天(redis快取) 08.第

2019新思路跨境助你快人一步! LL-YMX1

註意 倉儲 可能 自己 管理 本地化 會有 屬於 國際 不論是做國內的電商平臺還是跨境電商,每個人的心裏都只有一個目標,那就是開個店鋪安心賺錢,而且每個平臺都限制每人只能開一個店鋪,但是方法很重要,在2019年店群模式成為了熱門,隨著店群模式的興起,加上部分電商平臺的門檻較

如何打造一個小而精的網站架構

升級 它的 應用開發 sql語句 大綱 網關 響應 文件服務器 upd 本文大綱: 1. 小型電商網站的架構 2. 日誌與監控系統的解決方案 3. 構建數據庫的主從架構 4. 基於共享存儲的圖片服務器架構 5. 移動M站建設 6. 系統容量預估 7. 緩存系統

大型網站架構系列:網站架構案例(2)

嚴重 團隊 nbsp 很好 劃分 電商網站 架構圖 用戶 可能 電網網站架構案例系列的第二篇文章。主要講解網站架構分析,網站架構優化,業務拆分,應用集群架構,多級緩存,分布式Session。 五、網站架構分析 根據以上預估,有幾個問題: 需要部署大量的服務器,高峰期計算,

實現基於LVS負載均衡集群的網站架構

nat lvs dr 實現基於LVS負載均衡集群的電商網站架構具體如何實現電商網站請參看博客:http://13150617.blog.51cto.com/13140617/1978954實驗一、實現基於NAT模式的LVS負載均衡:準備三臺主機:一臺Director(橋接網卡、僅主機網卡):

基於LNMP的簡單網站架構

linux 運維 一:實驗環境centos 7 實驗機chrome 瀏覽器二:實驗步驟※註意事項實驗前,查看80端口是否被httpd服務占用,如打開,則關閉httpd服務,確保80端口未開啟1.安裝必要軟件yum install mariadb mariadb-server php-fpm php p

企業實戰-實現基於LVS負載均衡集群的網站架構

企業實戰 lvs lnmp 實現LVS-DR工作模式:環境準備:一臺centos系統做DR、兩臺實現過基於LNMP的電子商務網站機器名稱IP配置服務角色備註lvs-serverVIP:172.17.252.110DIP:172.17.250.223負載均衡器開啟路由功能(VIP橋接)rs01RIP

構建高並發高可用的平臺架構實踐(轉)

行數據 規模 互聯 物理內存 基於 無法 node 單獨 統計 轉載自:http://blog.csdn.net/yangbutao/article/details/12242441 一、 設計理念 1. 空間換時間 1) 多級緩存,靜態化 客戶

系統架構總結(一)

get 部分 上傳 其他 維護 let turn 同事 stat 最近主導了一個電商系統的設計開發過程,包括前期分析設計,框架搭建,功能模塊的具體開發(主要負責在線支付部分),成功上線後的部署維護,運維策略等等全過程。 雖然這個系統不是什麽超大型的電商系統

系統架構總結(二)

esp 簡單 zed expire cts project scac 允許 類型 二 Redis緩存 考慮到將來服務器的升級擴展,使用redis代替.net內置緩存是比較理想的選擇。redis是非常成熟好用的緩存系統,安裝配置非常簡單,直接上官網下載安裝包 安裝啟動就行

Java大型互聯網-構建高並發和高可用的平臺架構實踐原理

combine pen 連接池 推薦引擎 什麽是 img 於平 poll 階段 並發,在操作系統中,是指一個時間段中有幾個程序都處於已啟動運行到運行完畢之間,且這幾個程序都是在同一個處理機上運行,但任一個時刻點上只有一個程序在處理機上運行。 “高可用性”(High Avai