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