ElasticSearch7+Spark 構建搜索服務&推薦系統
整理總結一下 ElasticSearch7+Spark 構建高相關性搜索服務&千人千面推薦系統的筆記
完成一個點評搜索推薦項目 SpringBoot、ElasticSearch、Spark
概述 設計 業務需求 技術分解 模塊設計等
項目概述
完成一個點評搜索推薦項目
我們做一個合格的面向C端的系統,搜索及推薦能力是必不可少的。
搜索推薦
- 快速根據用戶關鍵詞搜索給出滿意的結果
- 結合用戶的歷史行爲、興趣偏好等推薦給用戶想到的服務商品以提升瀏覽點擊率和交易轉化率。
搜索服務必備
-
完整豐富的待搜索數據源
-
高效且穩定的搜索引擎
-
相關性語義的智能理解
推薦系統必備
-
完整豐富的訓練及測試數據集
-
個性化千人千面的召回及排序機器學習算法
-
可解釋且有實際意義的評價指標
項目設計
- 業務需求BRD及產品需求PRD的概念
- 如何將項目需求演化爲技術方案,架構設計及落地的操作過程
- 完成項目的技術設計
項目基礎搭建
-
使用SpringBoot完成業務系統的基礎搭建
-
接入Mybatis完成MySQL數據源的接入
-
封裝通用返回值,通用異常處理的基礎能力建設
業務領域模型能力建設
-
用戶領域模型
-
服務品類
-
運營後臺
-
門店
-
商戶能力建立
搜索推薦初級
-
使用業務系統及數據庫能力建設關鍵詞搜索及二次聚合篩shai選
-
結合lbs地理圍欄通過距離和評價控制排序策略
-
使用簡單的線性推薦策略完成初級的推薦系統
搜索進階
-
通過中文分詞器完成中文分詞學習
-
藉助logstash-input-jdbc學習全量及非實時增量索引構建
-
改造點評搜索應用,設計搜索架構
搜索再進階
- 通過定製化分詞器及同義詞擴展豐富搜索準確性
- 通過詞形分析及相關性重塑算法打造可理解語法的搜索引擎
- 通過定製化canal中間件完成準實時增量索引接入
推薦進階
- 通過Spark Mllib的ALS算法完成個性化召回體系
- 通過Spark Mllib的LR算法完成個性化排序體系
- 改造點評推薦架構,升級個性化推薦
環境參數介紹
- 後端業務 JDK8、SpringBoot框架
- 後端存儲MySQL數據庫5.7 Mybatis接入
- 搜索系統ElasticSearch 分佈式搜索引擎 Canal 1.1.3
- 推薦系統 spark mllib機器學習組件 2.4.4
- 前端頁面 HTML、CSS、JS、jQuery等
項目設計
項目設計
業務需求
需求分析,理解需求分析
技術分解,確定技術選型
模塊設計,完善系統流程
模擬現實情況中,點評搜索推薦項目從業務需求BRD到產品需求PRD,最終到技術方案選型,架構設計及技術落地的整個過程。
業務需求
業務需求
業務需求BRD (Business Requirement Document)
用戶故事 (User Story)
產品PRD(Product Requirement Document)
業務需求
- 仿大衆點評做H5應用
- 具備搜索線下門店服務功能
- 具備推薦線下門店服務功能,系統推薦你喜歡的東西
點評搜索推薦BRD(業務需求)
業務目的
模仿大衆點評應用提供用戶線下服務的頁面
業務場景
讓用戶可以通過對應的業務搜索想要的門店服務,並以AI推薦的方法給用戶做門店推薦
使用人員
1、需要獲得服務的用戶
2、業務的運營人員
用戶故事
- 打開應用首頁,可查看服務分類
- 打開應用首頁,可查看推薦門店列表
- 可通過首頁搜索欄,搜索關鍵字對應的門店列表,並篩選或排序。
產品PRD(業務需求)
- 用戶註冊、登錄,進入應用首頁的流程
- 運營維護服務分類,商家入駐,門店管理等運營後臺的功能
- 用戶通過搜索關鍵字,篩選條件,找到自己想要的門店服務的過程
- 用戶打開首頁後,系統根據用戶的歷史行爲做推薦門店服務的過程
點評搜索推薦PRD
完成一個點評搜索推薦項目,可可閉環、可落地的產品。。。
技術分解&模塊設計
技術分解
-
後端業務模塊
-
後端存儲模塊
-
前端頁面
-
搜索系統
-
推薦系統
業務模塊架構
業務實體
-
用戶管理
-
商家那裏
-
服務類型管理
-
門店管理
業務實體行爲
- 用戶註冊,用戶登錄
- 商家創建、商家瀏覽
- 服務類型創建,服務類型查詢瀏覽
- 門店創建,門店搜索及篩選,門店推薦
用戶(編號、用戶名、登錄密碼)
商家(商家名、是否禁用、商家評分)
門店(名字、人均價格、評分、地址、標籤、營業時間)
服務類型(名稱、圖標、排序)
系統模塊架構
技術選型
- 後端業務 JDK8、SpringBoot框架(2.1.5)
- 後端存儲MySQL數據庫5.7 Mybatis接入
- 搜索系統ElasticSearch 分佈式搜索引擎 Canal 1.1.3
- 推薦系統 spark mllib機器學習組件 2.4.4
小結
完成一個點評搜索推薦項目
瞭解從從業務需求、用戶故事,產品PRD(業務需求)到模塊設計系統模塊設計的過程,
技術選型中考慮的點和麪。
點:具體技術點
線:每一個請求的處理過程是一條線,對應 Tomcat 的線程池中的一個線程面:
面:多個請求組織在一起完成一個特定模塊的功能
體:多個模塊組合在一起構成一個完整的項目
技術一個個點點,具體的技術點 每一個請求 瀏覽器發送的 request - > tomcat每一個請求用一個線程來處理 一個請求 一個線 一個模塊 很多個請求組織在一起完成一個特定模塊的功能
一個個面 多個模塊組合在一起 一個體 點 線 面 體 正方體 項目是立體的 單一的 一條線 一個面 一個體 做項目
目標:聚焦當前要完成的任務。目標明確後才能分析實現的思路。甚至有的時候需 要對大目標進行拆解,把很多小目標各個擊破。
思路:針對目標的達成進行分析。具體到項目功能的實際開發中,體現爲流程圖。 代碼:參照思路分析時繪製的流程圖,把步驟翻譯成寫代碼時的註釋,再對照註釋
具體編寫代碼。
有一個目標 聚焦當前要完成的任務 怎麼去完成 拆解 各個擊破
指針 尖利 小大 聚焦 分散 不同的領域沒有突破 壓強
有了目標 分析 思路 怎麼幹成 我就知道寫代碼 你得去分析 寫代碼呀
很熟悉 初學者 重視 圖 每一個步驟 拆分 拆分 一步步去實現 思路 想做的東西 清晰
一步步 順序去做 畫個流程圖
點和麪和體