搜索產品有很多,其中有哪些需要注意的問題?在技術之外,我們還需要知道什么?
搜索產品有很多,其中有哪些需要注意的問題?在技術之外,我們還需要知道什么?
搜索本身是一個比較技術的事情,小白產品想要學習搜索的產品知識,就會發現各大論壇上的搜索相關內容都是技術為主。即使買上幾本搜索相關的書籍也大部分講的是搜索引擎的原理,無從下手去學習,入門就更難了。
那對于一個搜索小白來說,到底應該怎么樣去設計一個搜索引擎呢?
搜索路徑:輸入搜索詞-抓取數據-分析用戶搜索意圖-識別意圖并召回內容-結果集排序。
一、抓取數據
- 搜索引擎:在全網中抓取盡可能全的數據,供搜索引擎查詢。
- 垂類搜索引擎:這些數據95%以上都是平臺自建的,所以不需要去其他平臺抓取數據。如:淘寶、美團都是平臺自己維護的數據,平臺需要做的事情就是盡量讓數據準確、真實。如果一個賣衣服的商品錄入的信息全是賣鞋的,即使引擎再好也無法識別這件“衣服”。
1)單字分詞
就是用戶輸入詞分成單個字,每個單字匹配上搜索域就可以被搜索,這種分詞簡單易開發,適合spu和品類較少的平臺。但這種分詞方式有一個弊病,那就是搜索結果不準。
就比如我想搜索“小金鎖”的面膜,那搜索域中匹配上“小”、“金”、“鎖”三個字就可以被召回,真實案例就是搜索結果出現“金色小米手機人臉解鎖”的手機,尷尬至極。
2)短語分詞
這種分詞方式需要準備一個基于自己平臺的分詞詞庫(如果沒有找一個開源詞庫),分詞引擎基于這個分詞庫來分詞并進行搜索。
比如你想搜索“小金鎖”,分詞庫中包含“金鎖”、“小金鎖”,那你搜索的詞就會被分成“小”、“金鎖”、“小金鎖”,那搜索域中是“金色小米手機人臉解鎖”的sku就不會被搜索出來,因為“金鎖”、“小金鎖”這兩個詞并沒有匹配上。
部分垂類需要自建自己平臺的分詞庫,比如電商類的平臺,就可以從品類名稱、地域名稱、品牌名稱、店鋪名稱去搭建一個基礎庫。提供一個思路大家自己去思考,下一步應該怎么搞?
2. 詞語處理類
用戶搜索詞千奇百怪,避免不了同一個搜索結果,每個人搜索的詞不相同。但為了保證無論用戶輸入什么搜索詞,都可以變成想要的結果,這個時候就需要同義詞、近義詞、錯別字、屏蔽詞來干預。
1)同義詞
因為結果集取并集,所以用戶無論搜索同義詞中的哪個詞,得到的結果都是相同的。
同義詞庫搭建的時盡量保證詞庫的真實、準確,如果匹配分詞庫時有專業的業務部分,最好和業務部分確認好后再配置。如:剃須刀、刮胡刀,書、圖書,上海九院、上海第九人民醫院,拖鞋、鞋拖。
2)近義詞
近義詞是兩種詞的定義接近但又不是同一個東西的時候,一般配置近義詞。如:生抽、老抽,獼猴桃、奇異果。
有的人認為不是一種東西,有的人又非說是一種東西(人的認知邊界,此處不接受杠)。所以,近義詞可以完美解決這種情況。排序的時候優先展示搜索詞的結果集,配置的近義詞在搜索詞結果展示完后展示;當然也可以穿插展示,具體情況具體設計。
3)錯別字
錯別字需要做的是定義主詞和錯別字詞,錯別字在沒有進入搜索引擎的前一步就完成的替換。
錯別字情況在搜索引擎中最常見,如:雅詩蘭黛、雅思蘭黛、雅詩蘭戴、雅詩藍黛。這種情況簡單點就走同義詞,但對應的搜索詞和搜索域的相似度會有一定程度的影響,所以錯別字還是最有解決方案。
4)屏蔽詞
屏蔽掉一些無關或者無意義的詞。
如各種奇奇怪怪的標點符號、各種反d反d的詞語等,行業內有很多標準詞庫。在技術論壇上查找,不過多介紹。
3. 詞語識別類
主要還是標記一些詞為特殊詞,可以在用戶搜索該類詞的時候,給出一些特殊樣式的驚喜,就比如搜索“雅詩蘭黛”,不僅僅展示“雅詩蘭黛”商品,也可以展示“雅詩蘭黛”店鋪、“雅詩蘭黛”活動入口等等,給用戶的驚喜也是很大的!
三、識別意圖并召回內容 1. 搜索域:搜索域就是搜索詞匹配相似度的文本
初級的搜索產品,可能會覺得所有的信息都放進搜索域中就行了。其實大錯特錯,這樣導致的結果就是非常不準確。這個時候,搜索產品一定要克制,盡量把重要的字段放在搜索域中,就比如:商品標題、品類、標簽、sku名稱、sku規格等。
2. 相似度:搜索詞和搜索域匹配度也叫相似度(偏技術可略過)
1)分詞方式
如用戶搜索:“你說的確實在理”。
- “你說”、“的”、“確實”、“在理”=1*2+2*1+3*2+4*2=18
- “你說”、“的確”、“實”、“在理”=1*2+2*1+3*1+4*2=15
- “你說”、“的確”、“實在”、“理”=1*2+2*1+3*2+4*1=14
機器無法判定那種分詞方式是對,但是數字可以判斷大小。所以,搜索詞先判定了第一種分詞方式(真正的分詞比這個還要復雜,用分詞數量和分詞位置比較好理解,下幾篇文字會詳細講下如何分詞)。
2)匹配方式or和and
or和and無非就是用戶搜索詞和搜索域匹配的結果集是要部分匹配還是完全匹配,用哪種模式還是比較看行業的。電商、020建議用and較好,社區、視頻等內容類建議用or較好。
3)文本相似度=余弦相似度
余弦相似度,就是通過一個向量空間中兩個向量夾角的余弦值作為衡量兩個個體之間差異的大小。把1設為相同,0設為不同,那么相似度的值就是在0~1之間。余弦相似度的特點是余弦值接近1,夾角趨于0,表明兩個向量越相似。
看下圖:
比如:{你說 的 確實 在理}、{你說 的 在理},對應的向量分別是{1,1,1,1}、{1,1,0,1}套入到的公式中,相似度約等于80.4%
PS:但相似度是不準確的,“你真好看”和“你真難看”相似度75%,但其實他們一點也不相似。所以,機器學習、語義識別、神經語言等還是需要逐漸搞起來的(小廠謹慎搞)。
四、結果集排序 1. 業務因子排序
基于行業特性,定義一些業務因子來綜合打分行程排序。
基于多維度的分數來定義對應的結果集,一般可以加一些ctr、單uv價值、單pv價值、退款因子、轉發互動因子等等。要知道搜索結果不僅要準確,還要足夠受歡迎。
2. 人工干預排序
對于特定的詞或者類型,給予一些人工干預,保證搜索結果的準確性。
3. 個性化排序
基于用戶標簽,在搜索結果集中加權值。
比如技術宅搜索”蘋果“,大概率是想要iphone手機,那吃貨當然更希望是水果嘍。
搜索底層路徑基本就這四大節點,底層動作圍繞著四個節點有很多標準的行業解決方案,歡迎大家一起聊聊!
本文由 @Hankys 原創發布于人人都是產品經理,未經許可,禁止轉載
題圖來自 Unsplash,基于 CC0 協議


