幫你梳理與“搜索”相關(guān)的后臺(tái)流程

8 評(píng)論 16881 瀏覽 217 收藏 12 分鐘

“搜索”,對(duì)于前臺(tái)操作的用戶來(lái)說(shuō),只是一個(gè)極其簡(jiǎn)單的動(dòng)作。但對(duì)于后臺(tái)來(lái)說(shuō),則需要拆成“如何才能支撐‘搜索’這個(gè)動(dòng)作?”以及“我們要展示給用戶哪些元素?”兩個(gè)方面來(lái)考慮,才能更好地完成這個(gè)動(dòng)作。

對(duì)于有確定購(gòu)買目標(biāo)的用戶來(lái)說(shuō):如何能在海量商品中快速找到心儀商品呢?

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

前端用戶只是一個(gè)簡(jiǎn)單的“輸入+搜索”的操作,后臺(tái)就需要拆分出:“哪些邏輯可以用來(lái)支撐?”以及,“我們應(yīng)該給用戶展示哪些元素?”

今天,我們就來(lái)聊聊與“搜索”相關(guān)的后臺(tái)流程。

一、搜索結(jié)果頁(yè)布局

PC端的搜索結(jié)果頁(yè)都包含哪些元素?

參照如下圖:

淘寶PC端搜索結(jié)果頁(yè)

  • 搜索欄:用戶輸入query進(jìn)行檢索,是用戶尋找商品的一種快捷入口。從用戶輸入到展示商品列表之間的檢索過(guò)程,也是本文重點(diǎn)要講的。
  • 篩選項(xiàng):是商品結(jié)果集的屬性的聚合,給用戶提供在商品結(jié)果集內(nèi)進(jìn)一步按照各屬性維度單獨(dú)篩選的功能。
  • 分類樹(shù):query相關(guān)的分類,以分類樹(shù)的形式展現(xiàn)給用戶。比如:輸入“小米”既屬于“3C數(shù)碼”,又屬于“糧油米面”。
  • 面包屑:展現(xiàn)當(dāng)前商品列表所屬的分類路徑,方便用戶跳轉(zhuǎn)至各上級(jí)分類,同時(shí)可在該分類路徑下進(jìn)一步檢索,擴(kuò)大或縮小檢索范圍。
  • 商品列表:query搜索的結(jié)果集,涉及到商品的排序展示,是下文的重點(diǎn)。
  • 商品推薦:根據(jù)用戶當(dāng)前或者歷史的檢索行為,進(jìn)行商品推薦。

二、搜索流程框架

1. query分析

用戶輸入query,系統(tǒng)需要對(duì)query進(jìn)行預(yù)處理,包括:改寫糾錯(cuò)、近義詞、query補(bǔ)全。

  • 比如:用戶輸入“平鍋電腦”,通過(guò)分析判斷,用戶可能想搜索的是“蘋果電腦”。
  • 比如:搜索“電褥子”,也可以匹配“電熱毯”。
  • 比如:最近抖音用戶李佳琪以推薦口紅走紅,在TB輸入“李佳”就有對(duì)應(yīng)提示。

好的產(chǎn)品應(yīng)當(dāng)是讓用戶自行選擇,而不是強(qiáng)制改寫用戶的輸入。

有搜索結(jié)果則優(yōu)先展示搜索結(jié)果,同時(shí)提示糾錯(cuò)后的詞語(yǔ)供用戶一鍵搜索。糾錯(cuò)和補(bǔ)全可以看作是與query做模糊匹配,從而返回一個(gè)相似的單詞集合。

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

編輯距離:是兩個(gè)單詞之間轉(zhuǎn)化的最少變化次數(shù)。

比如:字符串“abcd”變?yōu)樽址癰cde”,需要?jiǎng)h除a再插入e編輯距離為2。

編輯距離的定義簡(jiǎn)單,但是關(guān)于“如何降低算法復(fù)雜度?”,這個(gè)比較偏技術(shù)。產(chǎn)品同學(xué)了解思想即可,對(duì)技術(shù)有熱情有興趣的同學(xué)也可以研究下Lucence內(nèi)的實(shí)現(xiàn)。

2. 分詞

當(dāng)用戶的搜索詞比較長(zhǎng),則需要將query切分成一個(gè)個(gè)單元。

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

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

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

除了通用詞條,跟產(chǎn)品業(yè)務(wù)相關(guān)的詞匯我們也需要盡可能的補(bǔ)充完善進(jìn)詞典。

這里我們介紹一下機(jī)械算法中的“正向最大匹配算法”和“逆向最大匹配算法”。

正向最大匹配算法:從左到右逐個(gè)組合掃描詞與詞典中的詞條進(jìn)行匹配,如果匹配成功,則把這個(gè)詞切分出來(lái),繼續(xù)匹配剩余的字符串。

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

讓我們來(lái)看一個(gè)例子:

待匹配詞條:string data=“仙女連衣裙夏季”,通過(guò)字符串截取函數(shù)截取對(duì)應(yīng)需匹配的詞條。

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

從data[1]開(kāi)始掃描,到data[2]的時(shí)候,發(fā)現(xiàn):“仙女”在詞表中有,但是還不能將該詞切分出來(lái)。因?yàn)椤跋膳笔莇ict[2]“仙女連衣裙”的前綴。

繼續(xù)掃描發(fā)現(xiàn):data[5]在詞表中有,但是還不能切分出來(lái)。

掃描data[6]發(fā)現(xiàn):在詞表中沒(méi)有“仙女連衣裙夏”,這個(gè)詞條也不是任何一個(gè)詞的前綴,則切分出前面最大的詞——“仙女連衣裙”。

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

逆向最大匹配算法:先定義一個(gè)最大分割長(zhǎng)度5,從右往左開(kāi)始分割。

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

從data[5]開(kāi)始掃描,若不在詞表中,去掉最左邊一個(gè)字,得到data[4],直到發(fā)現(xiàn)data[2]在詞表中,將詞語(yǔ)拆分出來(lái),此時(shí)待匹配詞條變?yōu)椤跋膳B衣裙”。

匹配data[5]時(shí),若發(fā)現(xiàn)詞表中有,則切分出來(lái),分割結(jié)束,得到的詞組為[“仙女連衣裙”,“夏季”]。

3. 索引匹配

索引:可以理解為是一種數(shù)據(jù)結(jié)構(gòu),是基于數(shù)據(jù)表中的某一列創(chuàng)建的,存儲(chǔ)了列值以及和表行的對(duì)應(yīng)關(guān)系。

例子我就不多說(shuō)了,不清楚的同學(xué)可以自行谷歌。如果沒(méi)有索引,在查詢時(shí),需要對(duì)數(shù)據(jù)庫(kù)表做全表掃描并做文本匹配,這是不現(xiàn)實(shí)的。

創(chuàng)建商品后,系統(tǒng)會(huì)將商品名稱分詞并且建立索引形成索引庫(kù),必要時(shí)也可以將商品類目、品牌引入索引庫(kù)中。將用戶query的分詞詞組與索引庫(kù)進(jìn)行匹配,得到商品候選集。

4. 商品侯選集

首先,匹配出query相關(guān)的類目以及與query文本相關(guān)的所有商品,以類目+文本為最高優(yōu)先級(jí)對(duì)商品進(jìn)行排序,類目和文本相關(guān)性一致的則根據(jù)權(quán)重排序。

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

給所有因子影響權(quán)重的比例定義一個(gè)系數(shù),需要根據(jù)實(shí)際業(yè)務(wù)運(yùn)營(yíng)策略制定。

比如:運(yùn)營(yíng)希望多曝光一些服務(wù)優(yōu)質(zhì)的店鋪,則店鋪維度的因子權(quán)重比例就高。如果運(yùn)營(yíng)想多曝光一些爆款商品,則提高商品各項(xiàng)因子的權(quán)重比例——截取商品候選集的topN做綜合排序得到商品結(jié)果集。

如下圖:

商品候選集選取流程

5. 綜合排序

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

  1. 同類目人工干預(yù)置頂
  2. 售罄或差評(píng)商品沉底
  3. 其他部分待排序。

通過(guò)點(diǎn)擊率預(yù)估模型對(duì)待排序商品重排序,并區(qū)分同類和其他類目。

影響點(diǎn)擊率預(yù)估模型的成分有:

  • 店鋪因素(店鋪近期訂單量,評(píng)分,物流,PV,UV)
  • 商品因素(銷量、價(jià)格,與同類商品價(jià)格差)
  • 用戶本身特征(近期購(gòu)買,瀏覽,收藏)
  • 實(shí)時(shí)特征(當(dāng)天商品被瀏覽,加購(gòu)等)
  • 季節(jié)因子

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

最后合并各個(gè)分段結(jié)果如下圖:

綜合排序流程

以上梳理了搜索流程中的一些關(guān)鍵節(jié)點(diǎn),而如何提高搜索引擎的用戶體驗(yàn)?zāi)兀?/p>

核心和難點(diǎn)在于:理解用戶,進(jìn)而高效的幫助用戶找到目標(biāo)商品。

這就離不開(kāi)運(yùn)用各種機(jī)器學(xué)習(xí)和自然語(yǔ)言處理技術(shù)進(jìn)行語(yǔ)義分析,不斷嘗試各種搜索引擎排序算法幫助用戶找到更優(yōu)質(zhì)的商品。

通常大型電商平臺(tái)的搜索團(tuán)隊(duì)都是偏技術(shù)配置,業(yè)務(wù)型的產(chǎn)品雖然不需要深度學(xué)習(xí)算法與數(shù)據(jù)模型相關(guān)的知識(shí),但是基本概念和思想最還好是要掌握。

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

 

本文由 @雷大胖子 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)許可,禁止轉(zhuǎn)載

題圖來(lái)自?Unsplash,基于 CC0 協(xié)議

更多精彩內(nèi)容,請(qǐng)關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號(hào)或下載App
評(píng)論
評(píng)論請(qǐng)登錄
  1. 可以請(qǐng)你喝杯咖啡,咨詢幾個(gè)問(wèn)題嗎?我是一個(gè)在三線城市的開(kāi)發(fā),有些電商后臺(tái)封面的一些問(wèn)題甚是困擾

    來(lái)自廣東 回復(fù)
  2. 請(qǐng)問(wèn)一下這些東西應(yīng)該是產(chǎn)品經(jīng)理來(lái)設(shè)計(jì),還是開(kāi)發(fā)自行解決?

    來(lái)自廣西 回復(fù)
  3. 請(qǐng)問(wèn)老師,分詞得到的詞組中,各個(gè)詞是否還有權(quán)重之分?以及下面的問(wèn)題,類目和文本相關(guān)性是如何判斷?

    來(lái)自廣東 回復(fù)
  4. 請(qǐng)教一下您,類目和文本相關(guān)性如何判斷

    來(lái)自廣東 回復(fù)
    1. es使用的文本相關(guān)性算法TD/IDF

      回復(fù)
  5. 請(qǐng)教一個(gè)問(wèn)題,電商的首頁(yè)搜索,輸入關(guān)鍵詞后,進(jìn)行匹配的時(shí)候,我們程序匹配的商品名稱。請(qǐng)問(wèn)商品類別的值及產(chǎn)品屬性值是否可以參與匹配,如果參與,三類結(jié)果應(yīng)該如何排序啊

    來(lái)自江蘇 回復(fù)
    1. 可以,其他屬性只要建好索引,搜索的時(shí)候都可以匹配。 結(jié)果集排序就要看你們自己的策略了,有些以類目為最高優(yōu)先級(jí)。

      來(lái)自上海 回復(fù)
    2. 還是困惑,能否舉一個(gè)普遍的排序邏輯啊,希望能加我微信:jiyuetian1pk110,一起交流下

      來(lái)自江蘇 回復(fù)