云盟科技微信公眾號
云盟科技微博
咨詢熱線:0731-88888283 | 0731-88880833
湖南領先的微信開發、APP開發、軟件研發、互聯網+、智慧黨建、多用戶商城提供商!
我們的優勢: 專業軟件開發、系統建設公司,頂尖設計師量身定制 高配置主機,BGP多線,高速訪問 領先的企業互聯網信息化整體解決方案服務商 48小時快速解決網站問題
您的位置: 首頁 > 新聞動態 > 技術支持 > 查看內容

" 搜索 ",對于前臺操作的用戶來說,只是一個極其簡單的動作。但對于后臺來說,則需要拆成 " 如何才能支撐‘搜索’這個動作?" 以及 " 我們要展示給用戶哪些元素?" 兩個方面來考慮,才能更好地完成這個動作。

對于有確定購買目標的用戶來說:如何能在海量商品中快速找到心儀商品呢?

搜索是必不可少的渠道,也在電商平臺中占據著舉足輕重的地位。

前端用戶只是一個簡單的 " 輸入 + 搜索 " 的操作,后臺就需要拆分出:" 哪些邏輯可以用來支撐?" 以及," 我們應該給用戶展示哪些元素?"

今天,我們就來聊聊與 " 搜索 " 相關的后臺流程。

一、搜索結果頁布局

PC 端的搜索結果頁都包含哪些元素?

參照如下圖:

淘寶 PC 端搜索結果頁

搜索欄:用戶輸入 query 進行檢索,是用戶尋找商品的一種快捷入口。從用戶輸入到展示商品列表之間的檢索過程,也是本文重點要講的。

篩選項:是商品結果集的屬性的聚合,給用戶提供在商品結果集內進一步按照各屬性維度單獨篩選的功能。

分類樹:query 相關的分類,以分類樹的形式展現給用戶。比如:輸入 " 小米 " 既屬于 "3C 數碼 ",又屬于 " 糧油米面 "。

面包屑:展現當前商品列表所屬的分類路徑,方便用戶跳轉至各上級分類,同時可在該分類路徑下進一步檢索,擴大或縮小檢索范圍。

商品列表:query 搜索的結果集,涉及到商品的排序展示,是下文的重點。

商品推薦:根據用戶當前或者歷史的檢索行為,進行商品推薦。

二、搜索流程框架

1. query 分析

用戶輸入 query,系統需要對 query 進行預處理,包括:改寫糾錯、近義詞、query 補全。

比如:用戶輸入 " 平鍋電腦 ",通過分析判斷,用戶可能想搜索的是 " 蘋果電腦 "。

比如:搜索 " 電褥子 ",也可以匹配 " 電熱毯 "。

比如:最近抖音用戶李佳琪以推薦口紅走紅,在 TB 輸入 " 李佳 " 就有對應提示。

好的產品應當是讓用戶自行選擇,而不是強制改寫用戶的輸入。

有搜索結果則優先展示搜索結果,同時提示糾錯后的詞語供用戶一鍵搜索。糾錯和補全可以看作是與 query 做模糊匹配,從而返回一個相似的單詞集合。

Apache 開源的全文檢索引擎工具包—— lucence,就提供了該功能點的實現。大致思想是:給定一個包含大量正確單詞的詞典集合,與用戶的 query 進行匹配,計算出編輯距離,距離越小則越相近。

編輯距離:是兩個單詞之間轉化的最少變化次數。

比如:字符串 "abcd" 變為字符串 "bcde",需要刪除 a 再插入 e 編輯距離為 2。

編輯距離的定義簡單,但是關于 " 如何降低算法復雜度?",這個比較偏技術。產品同學了解思想即可,對技術有熱情有興趣的同學也可以研究下 Lucence 內的實現。

2. 分詞

當用戶的搜索詞比較長,則需要將 query 切分成一個個單元。

比如:用戶搜索 " 夏季仙女連衣裙 ",如果用整個字符串做匹配的話,召回率就會很低。所以,需要分為 " 夏季 "+" 仙女 "+" 連衣裙 "。

市面上有開源的分詞工具包可以直接使用,比如:IKAnalyzer 中文分詞器。

但是,不同的分詞工具運用的分詞算法不一。以機械分詞算法為例——一種基于字符串匹配的分詞方法,它可將待分析的字符串與機器詞典中的詞條進行匹配,假如在詞典中找到某個字符串,則匹配成功。

除了通用詞條,跟產品業務相關的詞匯我們也需要盡可能的補充完善進詞典。

這里我們介紹一下機械算法中的 " 正向最大匹配算法 " 和 " 逆向最大匹配算法 "。

正向最大匹配算法:從左到右逐個組合掃描詞與詞典中的詞條進行匹配,如果匹配成功,則把這個詞切分出來,繼續匹配剩余的字符串。

那么如何做到最大匹配呢?

讓我們來看一個例子:

待匹配詞條:string data=" 仙女連衣裙夏季 ", 通過字符串截取函數截取對應需匹配的詞條。

詞表:array dict= [ " 仙女 "," 仙女連衣裙 "、" 連衣裙 "、" 夏季 " ] 。

從 data [ 1 ] 開始掃描,到 data [ 2 ] 的時候,發現:" 仙女 " 在詞表中有,但是還不能將該詞切分出來。因為 " 仙女 " 是 dict [ 2 ] " 仙女連衣裙 " 的前綴。

繼續掃描發現:data [ 5 ] 在詞表中有,但是還不能切分出來。

掃描 data [ 6 ] 發現:在詞表中沒有 " 仙女連衣裙夏 ",這個詞條也不是任何一個詞的前綴,則切分出前面最大的詞—— " 仙女連衣裙 "。

以此類推,最后得到的詞組為: [ " 仙女連衣裙 "," 夏季 " ] 。

逆向最大匹配算法:先定義一個最大分割長度 5,從右往左開始分割。

以 data [ 5 ] 表示 " 連衣裙夏季 ",data [ 4 ] 表示 " 衣裙夏季 "。

從 data [ 5 ] 開始掃描,若不在詞表中,去掉最左邊一個字,得到 data [ 4 ] ,直到發現 data [ 2 ] 在詞表中,將詞語拆分出來,此時待匹配詞條變為 " 仙女連衣裙 "。

匹配 data [ 5 ] 時,若發現詞表中有,則切分出來,分割結束,得到的詞組為 [ " 仙女連衣裙 "," 夏季 " ] 。

3. 索引匹配

索引:可以理解為是一種數據結構,是基于數據表中的某一列創建的,存儲了列值以及和表行的對應關系。

例子我就不多說了,不清楚的同學可以自行谷歌。如果沒有索引,在查詢時,需要對數據庫表做全表掃描并做文本匹配,這是不現實的。

創建商品后,系統會將商品名稱分詞并且建立索引形成索引庫,必要時也可以將商品類目、品牌引入索引庫中。將用戶 query 的分詞詞組與索引庫進行匹配,得到商品候選集。

4. 商品侯選集

首先,匹配出 query 相關的類目以及與 query 文本相關的所有商品,以類目 + 文本為最高優先級對商品進行排序,類目和文本相關性一致的則根據權重排序。

影響權重的因子包含:" 商品近 30 天的銷量 "、" 評論平均分 "、" 上線日期 "、" 店鋪得分(文描,評論,物流)" 等。

給所有因子影響權重的比例定義一個系數,需要根據實際業務運營策略制定。

比如:運營希望多曝光一些服務優質的店鋪,則店鋪維度的因子權重比例就高。如果運營想多曝光一些爆款商品,則提高商品各項因子的權重比例——截取商品候選集的 topN 做綜合排序得到商品結果集。

如下圖:

商品候選集選取流程

5. 綜合排序

從商品列表中提取出三部分 :

同類目人工干預置頂

售罄或差評商品沉底

其他部分待排序。

通過點擊率預估模型對待排序商品重排序,并區分同類和其他類目。

影響點擊率預估模型的成分有:

店鋪因素(店鋪近期訂單量,評分,物流,PV,UV)

商品因素(銷量、價格,與同類商品價格差)

用戶本身特征(近期購買,瀏覽,收藏)

實時特征(當天商品被瀏覽,加購等)

季節因子

對同類目的商品優先提取品牌和商品詞符合的做前置(比如搜索小米插座   品牌:小米,商品詞:插座)。

最后合并各個分段結果如下圖:

綜合排序流程

以上梳理了搜索流程中的一些關鍵節點,而如何提高搜索引擎的用戶體驗呢?

核心和難點在于:理解用戶,進而高效的幫助用戶找到目標商品。

這就離不開運用各種機器學習和自然語言處理技術進行語義分析,不斷嘗試各種搜索引擎排序算法幫助用戶找到更優質的商品。

通常大型電商平臺的搜索團隊都是偏技術配置,業務型的產品雖然不需要深度學習算法與數據模型相關的知識,但是基本概念和思想最還好是要掌握。

以上是我的分享,歡迎交流。

本文由 @雷大胖子 原創發布于人人都是產品經理,未經許可,禁止轉載

題圖來自   Unsplash,基于 CC0 協議

關于我們

云盟科技專注互聯網領域的手機APP研發、軟件系統研發、IT技術服務等,是一家領先于互聯網的企業信息化整體解決方案服務商。公司的服務宗旨是:"用良心做好服務,用實力做好質量!"

聯系我們

  • 地址: 湖南長沙創谷國家廣告產業園A3棟13樓(全層)
  • 電話: 0731-88888283 | 0731-88880833
  • Email: [email protected]
掃描二維碼 關注我們官方微信 解決建站問題
咨詢熱線

0731-88888283
0731-88880833

周一至周六9:00-18:00

售后服務 / 投訴處理

Copyright ? 2008-2017 湖南云盟科技有限公司 版權所有    | 湘ICP備17002345號

云盟科技法律顧問:謝律師    ?

河船送福救援彩金