如何從0到1搭建電商搜索系統(tǒng)(一)
夢寐以求的在家辦公居然在這種情況下實(shí)現(xiàn)了?!假期越來越長,眼睛一睜一閉假期又多幾天……閑來無事趁著周末把產(chǎn)品如何入門搜索給大家寫寫。
本文會先簡單介紹一下搜索系統(tǒng)的結(jié)構(gòu)是怎么樣,幫助產(chǎn)品小白如何快速的入門搜索,做一個能基本滿足中小型電商平臺使用的搜索系統(tǒng)。希望可以幫到1到2個小伙伴。歡迎更多有興趣的小伙伴一起學(xué)習(xí)討論,共同進(jìn)步。
概覽篇
隨著電商商品SPU越來越多,對于電商平臺的搜索商品能力要求越來越高,各家電商平臺都開始自己做搜索系統(tǒng)。這樣會有一個好處就是可以根據(jù)自身實(shí)際情況調(diào)整商品排序,也比較適合商品價格競爭力保密性比較高的電商平臺。
1. 核心指標(biāo)
一般電商的搜索的核心指標(biāo)是搜索精度和搜索廣度,精度就是搜索的精確性,廣度就是搜索結(jié)果的范圍。
搜索足夠準(zhǔn)確就行了,為什么還有一個搜索廣度指標(biāo)?
電商的搜索的關(guān)鍵結(jié)果(Key Result)肯定是“為用戶準(zhǔn)確搜索到想要的商品”。這主要是由于各式各樣的電商平臺商品雖然越來越多也不會面面俱到,所以過于追求搜索的精確度就會導(dǎo)致用戶搜索的結(jié)果比較少或者搜索不到的情況多發(fā),這樣的后果往往就會顯得平臺商品比較單薄。
用戶搜索不到商品勢必會產(chǎn)生流失,一方面要督促采銷同學(xué)增加商品競爭里,另外一方面在搜索這個產(chǎn)品里面可以做的就是需要給用戶暴露一些相關(guān)的商品。
所以搜索做的好不好,其實(shí)是在搜索精度和搜索廣度二者之間做一個比較好的平衡點(diǎn)。
2. 搜索架構(gòu)
搜索主要包括分詞、數(shù)據(jù)查詢、數(shù)據(jù)排序。
這是我找到一個比較直觀的搜索架構(gòu),重新畫了一下。可以看到用戶搜索商品的時候輸入搜索關(guān)鍵詞,通過查分搜索的關(guān)鍵詞,將拆分的關(guān)鍵詞在和商品數(shù)據(jù)、庫存數(shù)據(jù)、營銷活動、訂單信息等數(shù)據(jù)相匹配,得到查詢結(jié)果,根據(jù)相關(guān)性、銷量、優(yōu)惠程度、用戶以往下單的歷史記錄等因素對搜索的結(jié)果做合理排序。
分詞篇
很多小伙伴不明白為什么搜索需要分詞?
分詞可以將用戶搜索的關(guān)鍵詞拆解,分析主要關(guān)鍵詞來快速找到一堆商品,再根據(jù)用戶的形容詞來篩選這部分商品,得到正確的結(jié)果。
舉個栗子,搜索“進(jìn)口紅鳥鞋油”,如果沒有分詞的過程,按照逐個字來匹配,“進(jìn)口紅……”搜索引擎就認(rèn)為是口紅,搜索出來的結(jié)果就會有口紅,而用戶搜索目標(biāo)商品其實(shí)是鞋油,這顯然就不對了。加上分詞,“進(jìn)口紅鳥鞋油”被正確識別品類為屬于鞋油,“進(jìn)口”為普通屬性詞只有0.1的權(quán)重,“紅鳥”其實(shí)是一個品牌詞,權(quán)重0.8僅次于鞋油。
分詞主要包括建立詞庫、詞義分析,以及搜索糾錯。
用戶搜索關(guān)鍵詞后,通過搜索監(jiān)控會對這些搜索的關(guān)鍵詞做一個數(shù)據(jù)整理,數(shù)據(jù)經(jīng)過清洗,去掉一些無意義的亂碼。有一個詞庫會把這些清洗后的關(guān)鍵詞詞條記錄下來,詞條通過語義分析(詞義分析)和分詞服務(wù)被拆分成最小顆粒度。根據(jù)拆分后的關(guān)鍵詞,進(jìn)行權(quán)重分析就能得出該關(guān)鍵詞的主次程度;光是有主次關(guān)鍵詞還不夠,會對關(guān)鍵詞從平面的一句話拆分成幾個維度來看,從多維度多屬性立體查詢商品。
1. 建立詞庫
一般垂直的電商平臺會自建詞庫,用戶搜索的關(guān)鍵詞會根據(jù)詞庫里面的詞條來匹配,將關(guān)鍵詞依照匹配結(jié)果拆分。
舉個栗子:關(guān)鍵詞如果是“豬肉脯”,如果詞條里面只有“豬肉”,那么“豬肉脯”的分詞結(jié)果就是“豬肉”和“脯”;可以看出形形色色的關(guān)鍵詞很多,建立詞庫需要大量的用戶數(shù)據(jù)積累,一開始就自建詞庫往往會出現(xiàn)搜索搜不準(zhǔn)的情況,這就不奇怪是什么原因了~
所以自建的詞庫都不僅成本高,見效慢,而且還有經(jīng)常出現(xiàn)搜索不準(zhǔn)的情況。但是為什么垂直電商還是會自建詞庫?
這樣做的好處主要是可以更加貼合本平臺商品,提升搜索精度。再舉個栗子:一個賣二手手機(jī)的平臺,就可以增加一些手機(jī)參數(shù)和型號等數(shù)字作為詞條,比如搜索“A1865”,這個詞如果在詞庫里面有,就會被作為整詞搜索,用戶通過搜索引擎能比較好的搜索到iPhoneX 國行和港版。
2. 詞義分析?
詞義分析主要是將用戶輸入的關(guān)鍵詞通過NLP(Natural Language Processing 自然語言處理)理解詞義,找到輸入關(guān)鍵詞的中心詞,關(guān)鍵詞按照不同的類型進(jìn)行拆分并計(jì)算得分。
根據(jù)某大廠的一個通用實(shí)體命名接口,我們先將“阿瑪尼臻致絲絨啞光唇釉”作為搜索的關(guān)鍵詞模擬一下分詞情況;可以看的分詞的結(jié)果主要包括品類詞、品牌詞、屬性詞(修飾詞)這三部分,權(quán)重也是依次遞減。
從搜索分詞的結(jié)果來看,自建詞庫在選擇網(wǎng)上開源的詞條的,同時也可以根據(jù)自家電商平臺商品的屬性來擴(kuò)充詞庫。一般包括品牌詞,品類詞以及其他的商品屬性詞。
3. 搜索糾錯
上圖分詞結(jié)果圖中,可以看到?? “synonym”: “amani;阿媽尼;armani jeans;阿碼尼;emporio armani;armani” “amani”、“阿媽尼”、“阿碼尼”這個就是“搜索糾錯”的一個過程。主要是為了避免用戶因?yàn)檩斎敕ā⒖诒畟鞑バ畔⒉町惖惹闆r,導(dǎo)致搜索不到用戶期望的結(jié)果。
搜索糾錯分為同義詞、近義詞、錯別字、屏蔽詞。
同義詞: 一般包括品牌的中英文、別名等。armani和阿瑪尼是同義詞,以及上圖返回結(jié)果里面的【synonym】里面第一個“amani”其實(shí)是全拼,可以算在同義詞里面;或者“楊樹林”也是ysl的同義詞。
近義詞:商品的近義詞邊界其實(shí)不太好定義,因?yàn)槊總€人對詞的理解都不一樣;近義詞的應(yīng)用場景其實(shí)是為了增加搜索的廣度,可能商城里面獼猴桃比較少或者買完了,搜索結(jié)果展示一下奇異果也不足為奇。所以為了搜索廣度,那么我們比較將相近的兩個詞也加上關(guān)聯(lián)關(guān)系,來減少搜索結(jié)果較少、搜索不到帶來的不好的體驗(yàn)。
錯別字:這是為了避免輸入法在輸入的時候,難免輸入一些錯別字,沒有搜索自動糾錯就會把“阿碼尼”在分詞環(huán)節(jié),拆分成“阿”、“碼”、“尼”,而不會被認(rèn)為是一個品牌詞“阿瑪尼”。
屏蔽詞:在搜索關(guān)鍵詞的時候,用戶可能會因?yàn)榧訕?biāo)點(diǎn)符合等加了一些亂碼等,避免這些亂碼或者標(biāo)點(diǎn)符號影響搜索結(jié)果,擾亂搜索結(jié)果的權(quán)重。所以在遇到亂碼和標(biāo)點(diǎn)符號的時候就先屏蔽掉。
由于搜索作為較為龐大的系統(tǒng),再三思索,本文將根據(jù)搜索系統(tǒng)的分詞、數(shù)據(jù)查詢、數(shù)據(jù)排序會拆成多篇介紹。
欲知后事如何,請聽下回分解~
本文由 @戴大寶 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)作者許可,禁止轉(zhuǎn)載。
題圖來自Unsplash,基于CC0協(xié)議。
使用的是什么分詞API
寫的超贊,還能期待更新嘛
大佬,后續(xù)更新發(fā)了嗎?您寫的文章很棒,渴望看到后續(xù)內(nèi)容呀
在哪里更新了
趕緊跟新呀 ?。。?/p>
求更新呀
求更新
好的
更新在哪里了,想看續(xù)篇
??