之前的文章探討過用戶端背后系統(tǒng)的邏輯和結(jié)構(gòu)情況,后續(xù)我會考慮逐步解構(gòu)每個相關(guān)系統(tǒng)的情況。今天跟大家聊一聊搜索系統(tǒng),搜索系統(tǒng)在所有電商系統(tǒng)里面復(fù)雜度和難度是可以排的上前列的。關(guān)于算法方面介紹的文章很多,這里不做贅述,只解構(gòu)下搜索系統(tǒng)的基本邏輯和實現(xiàn)。對于產(chǎn)品來說未免溝通時“露怯”,了解搜索系統(tǒng)的基本知識和結(jié)構(gòu)是有必要的。
搜索系統(tǒng),顧名思義提供大數(shù)據(jù)查找篩選的系統(tǒng)功能。在電商和O2O領(lǐng)域作為一個主要的流量入口起到了至關(guān)重要的作用。
“基本介紹”:指標(biāo)
對于搜索來說,主要的指標(biāo)為準(zhǔn)確率和召回率。我們以下圖為例解釋下什么叫做準(zhǔn)確率和召回率。
圖中整體的部分為所有商品數(shù)據(jù)的全集,其中包括不相關(guān)和相關(guān)的內(nèi)容。
準(zhǔn)確率:搜索結(jié)果中相關(guān)內(nèi)容的比例,即圖中A的部分
召回率:搜索結(jié)果占整體內(nèi)容的比例,即A+B
由此我們可以看出,最完美的結(jié)果是A足夠大且B足夠小,但實際實現(xiàn)中會發(fā)現(xiàn)兩個指標(biāo)是相反的(召回率越高準(zhǔn)確率會越低)。需要通過規(guī)則來平衡這塊部分。
“基本介紹”:基礎(chǔ)結(jié)構(gòu)
搜索系統(tǒng)主要的組成部分有幾塊:
名詞解釋:
“基本介紹”:應(yīng)用場景
搜索的應(yīng)用一般有兩種:全文檢索和suggest。其中suggest的規(guī)則比全文檢索要簡單一些。服務(wù)上由于suggest一般支持模糊查詢的情況,所以要考慮服務(wù)上是否要獨立還是公用一套。
切詞/詞庫
切詞,又叫分詞。用于將用戶輸入的無結(jié)構(gòu)化字符變成機器可識別的詞組。市面上有很多成熟的切詞組件。切詞邏輯有很多種,根據(jù)字符、概率等,電商和O2O一般使用字符串切詞的方式處理。關(guān)于切詞的方法最基礎(chǔ)的有最大正相匹配、最大逆向匹配、雙向匹配等,具體的內(nèi)容可以百度查詢。切詞工具根據(jù)詞庫中的詞典進(jìn)行切分,一般開源的切詞工具都有默認(rèn)的詞庫和自定義詞庫兩種情況。用戶可通過添加自定義詞庫來完善補充。
這里面需要強調(diào)的是切詞時候的過濾,尤其生鮮類非標(biāo)品情況下特別需要注意。
單字詞、助詞之類的是否要過濾掉。如米、面、油等
別名情況的處理,尤其是生鮮類。比如在北京叫油菜,在上海叫上海青,在重慶叫漂兒白
檢索結(jié)果集
根據(jù)切出的詞語進(jìn)行匹配,匹配到的商品信息集合為檢索結(jié)果集。結(jié)果集需要做檢索、過濾、標(biāo)記三個步驟。
檢索
檢索項包括但不限于:
成熟的電商系統(tǒng)不僅僅實現(xiàn)用戶的基本商品檢索,還會根據(jù)query進(jìn)行意圖分析來進(jìn)行query轉(zhuǎn)換。以生鮮電商舉例,當(dāng)用戶搜索“豬肉”時,用戶希望獲得的不是含有豬肉詞語的商品,而是豬肉的各個部位、豬肉級別等。這時應(yīng)該轉(zhuǎn)化為后臀尖、前臀尖、里脊,一級白條等詞語進(jìn)行檢索,而不是匹配豬肉。意圖分析主要有兩個方面
行為模式分析
用戶畫像分類
過濾
獲取的結(jié)果集需要經(jīng)過去重、過濾的處理。此部分行為可以在加權(quán)打分后進(jìn)行處理,也可以安排在初選結(jié)果后處理。
同一個商品被多個詞語命中需要去重
現(xiàn)實中的電商搜索可能會根據(jù)不同的場景構(gòu)建所謂的“小搜索”,如按照類目、按照品類、按照定制化場景等。所以針對不同的搜索場景可能會有單獨的過濾去重條件,也可以在構(gòu)建數(shù)據(jù)的時候使用不同的庫進(jìn)行處理。
O2O場景需要按照一定區(qū)域概念(城市、商圈等)進(jìn)行過濾
售罄商品需要過濾
下線商品需要過濾
標(biāo)記
在檢索完成后需要對數(shù)據(jù)進(jìn)行標(biāo)記,以便后續(xù)做加權(quán)時使用。此步也可以在做加權(quán)處理的時候同步進(jìn)行。
加權(quán)
加權(quán)的目的是為了根據(jù)模型確定結(jié)果集各個商品的排序優(yōu)先級。加權(quán)的維度有很多,根據(jù)不同的場景考慮也會有所區(qū)別。
加權(quán)因子主要分為幾個維度:
相關(guān)度
商業(yè)化因素
個性化因素
人為因素
數(shù)據(jù)模型統(tǒng)計
相關(guān)度
這里指的是分詞的相關(guān)度。包括文本匹配、詞間距、是否是中心詞、品牌詞等。中心詞的概念是是否命中了核心的詞語,中心詞和品牌詞也需要有對應(yīng)的詞庫進(jìn)行維護(hù)更新。詞間距是計算相關(guān)性的一個維度,比如一段文本中包含清華、大學(xué),“清華大學(xué)xxxxxxx”和“清華xxxxxxx大學(xué)”相比肯定是前者相關(guān)性更高一些。
這里面有幾點需要注意:
query被完整匹配和部分匹配的權(quán)重是不同的
單詞命中和多詞命中同一商品也需要考慮權(quán)重情況
商業(yè)化因素
考慮業(yè)務(wù)場景下需要關(guān)注的因素稱之為商業(yè)化因素。
商品庫存
是否新品(考慮新品的特殊性,也可以將此權(quán)重獨立打分)
商品銷量
是否促銷商品
銷售額
商品分類
商品品牌
CTR(廣告類的商品要考量)
所屬平臺(POP、自營)
區(qū)域(020屬性)
終端情況(手機、PC)
個性化因素
按照個人使用的情況進(jìn)行個性化排序,做到所謂的“千人千面”。包括下單數(shù)據(jù)分析等。這部分同意圖分析的情況類似。
人為因素
在日常運營過程中,有很多需要做強制人為干預(yù)的事情(如人工置頂)。所以在加權(quán)的時候需要考慮此類行為。
數(shù)據(jù)模型統(tǒng)計
可以根據(jù)用戶的一些行為數(shù)據(jù)或者埋點數(shù)據(jù)分析,提供綜合排名靠前的商品或者分類做單獨加權(quán)權(quán)重。包括:
用戶點擊
用戶收藏
購買數(shù)
排序處理
根據(jù)加權(quán)的情況和一些特殊的處理,需要對最終輸出的結(jié)果做排序調(diào)整。
這里提供兩種方法供大家參考
可以按照加權(quán)打分的分值之和做排序。這樣做比較直接,但在后續(xù)調(diào)整的過程中驗證規(guī)則時容易混淆不清晰。
將不同的權(quán)重維度單獨計算,生成一個長位數(shù)的標(biāo)識符,每個權(quán)重在標(biāo)識符上有自己的位置。按照優(yōu)先級的順序從左到右依次排列??紤]到機器計算的易用性上,可以在加權(quán)時使用十進(jìn)制,然后統(tǒng)計時轉(zhuǎn)換成二進(jìn)制即可。類似下圖這樣,位數(shù)和排序可以根據(jù)具體業(yè)務(wù)場景制定。
最后要說下,在算法中要考慮相同因子下的打散,比如同一個商家店鋪下的商品排序需要按照一定比例分布在不同地方,避免一次性展示過多同類商品。
如果系統(tǒng)能力富足,也可以增加單獨的反作弊模塊來處理一些惡意刷單刷榜的情況。
搜索系統(tǒng)主要為用戶端提供搜索結(jié)果的輸出,輸入方面來自于相關(guān)的下游系統(tǒng)。
當(dāng)搜索場景進(jìn)一步細(xì)分時,要考慮更多數(shù)據(jù)的對接和分類。
在設(shè)計時有幾個需要注意的地方:
搜索數(shù)據(jù)比較龐大,直接使用API調(diào)用實時數(shù)據(jù)對于系統(tǒng)壓力過大,一般可采取搜索自建索引庫,定時(比如15分鐘)從相關(guān)系統(tǒng)拉取數(shù)據(jù)的方式。
基于不同的場景可以提供單獨的索引庫來實現(xiàn),避免邏輯耦合不好分離做個性化。
用戶端在調(diào)用suggest時考慮到服務(wù)壓力,建議延遲幾秒請求數(shù)據(jù)。
分詞詞庫的維護(hù)也依賴于定期從相關(guān)系統(tǒng)中獲取補充。
搜索系統(tǒng)的核心是算法,從產(chǎn)品層面來說更多是關(guān)注業(yè)務(wù)邏輯規(guī)則以及上下游的依賴情況。本文對搜索的一些通用情況做了簡單介紹,更深入的內(nèi)容還需要大家在日常過程中進(jìn)一步的深挖。
以上就是上海網(wǎng)站設(shè)計提供的內(nèi)容,如果想要了解關(guān)于優(yōu)秀的教育電商網(wǎng)站設(shè)計案例及什么是自媒體營銷,可直接點擊查看