你知道“點擊搜索框到出現搜索結果”背后的故事嗎?
搜索功能在各大APP中可以說是司空見慣的標配,相對“社交流量”的信息找人,“搜索流量”是人找信息,它傳遞的是一種“我想知道”的信息。搜索的算法設計可以很簡單也可以很復雜,本文旨在帶對搜索感興趣的你了解“點擊搜索框到出現搜索結果”背后的故事。
搜索框設計思路
先從搜索框的設計思路說起。UI元素不多提,主要強調一下宏觀上“針對不同用戶的不同需求設計搜索模塊”的產品思維。
我們看看iOS系統、產品經理APP、淘寶、Google的搜索位置和設計(如下圖),從左到右依次是手機系統->閱讀類APP->電商類APP->搜索引擎的代表,用戶在這些場景里對搜索的需求依次增強,搜索在頁面上的表現形式也依次增強:搜索半隱藏->搜索icon->搜索在頂部欄固定->索索是首頁主體。
(iOS系統、產品經理、天貓、Google搜索框設計)
產品經理APP,搜索功能以icon的形式放在首頁右上角,它的搜索功能非常弱(搜索結果常常不如人意),首頁強調的是運營的結果——“你應該知道”的信息,弱化了搜索功能——“你想知道”的信息,也可能是出于開發成本的緣由弱化了搜索。
在抖音和快手APP里,抖音將搜索功能以icon的形式放在首頁左上角,快手將搜索功能放在個人頁(二級頁面)里,體驗下來,抖音的搜索功能的體驗比快手更好,快手也是避短了。以上從本質上說,都是為了給用戶提供更好的產品體驗。
(左:抖音,右:快手)
搜索算法
搜索icon背后的邏輯是通向“理想結果”的通道,大致分為四步:
- 用戶輸入內容(稱“query”)
- 分析用戶搜索意圖
- 根據用戶輸入的信息對內容進行篩選召回
- 對召回后的結果進行排序
Step1:用戶輸入內容
用戶在搜索框輸入的內容,常見的是文本,現在也有圖片、語音的方式。
在搜索框內設置“引導暗文”屢見不鮮,它既可以教育新用戶可以搜索哪些關鍵詞(如下左圖),也可以承擔運營推廣、商業化的職能(如下右圖)。
(左:多抓魚,右:美團)
用戶有時候會重復搜索同一內容,保留搜索歷史就顯得有必要了。移動APP的搜索歷史記錄大致有兩種展示樣式,列表式和按鈕式,按搜索時間倒序排列,超過顯示條數會被折疊。搜索歷史刪除功能有單條刪除或一鍵清除兩種。
搜索歷史記錄下常配有熱門推薦、特色欄目、話題榜等運營模塊。在資訊APP中,以熱度榜最為常見,以“標題+熱度值或熱度角標”的方式出現,讓用戶能快速了解當前的熱點從而點擊感興趣的內容進入“消費場景”。
這些模塊涉及各自的排序算法或業務邏輯,其中蘊含商業化和運營價值,如在熱議榜中穿插運營活動或廣告或搜索掛件,但要注意熱度和體驗的合理性,避免出現突兀感降低用戶的信任感和體驗感。
(資訊APP搜索頁面截圖)
如果內容類型較多,產品會傾向于先讓用戶限定范圍再搜索,使搜索結果更精準,如微信搜索(如下左圖),也有的APP是在搜索結果上做分類,如資訊APP(如下右圖)。
(左:微信,右:今日頭條)
除了歷史搜索,有沒有其他提高用戶輸入效率、降低輸入錯誤率的辦法?
自動補全是不錯的方法。這是基于產品定位或基于用戶行為/畫像的聯想部分,對于前者的理解,如用戶在京東APP上搜索水蜜桃,用戶是想購買水蜜桃,而不是想搜索水蜜桃的百科;對于后者的理解,如用戶先前瀏覽過陰陽師手辦,當他在搜索框輸入“陰陽師”的關鍵詞時,“陰陽師手辦”會是自動補全的首選。
(自動補全示例)
另外,當用戶點擊搜索按鈕后,若需要等待搜索結果,需要有加載提醒的標識,避免用戶認為搜索功能無響應。
Step2:分析用戶搜索意圖
對用戶搜索意圖的分析涉及分詞和詞語處理。
分詞也稱“文本詞條化”,但總的來說用戶更傾向于輸入“連衣裙 藍色”代替“我想要買一條藍色的好看的連衣裙”。分詞依賴分詞庫和詞性判斷,前者需要維護一個和產品定位相匹配的詞庫(市面上已有很多開源且豐富的詞庫), 詞庫的維護涉及新詞發現,從大數據的分析可以將新詞發現的流程自動化,人工抽檢即可,例如詞語“中國有嘻哈”是2017年才有的新詞,代表一檔Hip-hop音樂選秀節目。而詞性判斷涉及用詞性庫和上下文去分析詞語的詞性。
詞語處理包括停用詞過濾、同義詞/近義詞轉換、詞條歸一化、自動糾錯等。
停用詞過濾指剔除“的”、“了”這類無意義的詞或字,主要是通過詞或字出現頻次判斷,市面上也有可用的停用詞庫。
用戶在使用搜索的時候難免會有輸錯關鍵詞或表意不清的情況,這時候理解用戶搜索意圖需要“自動糾錯”,主要是通過噪聲信道模型去糾正用戶的錯誤輸入,糾錯的類型一般有:
- 同音糾錯;
- 形似字糾錯;
- 多字、少字、錯別字、順序錯誤;
- 模糊音糾錯,對英文輸入來說,還有大小寫歸一化、詞形時態的糾錯等。
結果頁頂部最好保留疑似錯誤關鍵詞的搜索結果入口,避免機器誤判損傷產品體驗。
(百度搜索“自動糾錯”示例)
Step3:根據用戶輸入信息對內容進行篩選召回
在對內容進行召回前,我們需要通過索引去連接內容,就像查字典時用的查字目錄。搜索的索引是倒排索引(inverted index),可以簡單理解為“需要根據屬性的值來查找記錄”。
以電商為例,如下圖:
(倒排索引示例)
召回內容時一般根據相似度分值擇優召回。以資訊APP為例,即計算關鍵詞和文章的相似度,通常是通過tfidf算法計算關鍵詞和文本的相似度(標題、摘要、正文等不同文本有不同權重)或通過embedding(向量化)召回。
Step4:對召回后的結果進行排序
排序可以考慮內容靜態分,評論、點贊、收藏等業務數據可以是影響最終score的因素。如果有個性化部分(如電商),機器會基于用戶畫像,在召回和排序的時候將用戶可能最關心的內容優先召回和排序。重排環節加上業務邏輯,如商業化廣告、運營活動等,該次搜索的結果展示list就準備好了。
對于時效性要求比較強的產品,如資訊APP,還需要加上一個時間衰減因子,避免將老舊內容先推出。
Step5:搜索結果展示
搜索結果展示頁,常規的是根據相似度計算+業務邏輯的“關鍵詞推薦”,另一種是“聯想推薦”,適合的場景有:
- 在沒有搜索結果或搜索結果較少的情況下“拓展”推薦,總比一個空白頁好;
- 除正常的搜索結果外,補充根據用戶畫像匹配的內容(用戶感興趣的概率高)或通過大數據計算出來的內容,作為一種兜底策略;
- 承擔某些運營功能。
另外,在搜索結果頁的一個小技巧,對命中關鍵詞的文字進行高亮顯示,讓搜索結果更加“一目了然”。
(資訊APP搜索“慶余年”,結果展示頁)
搜索指標
以資訊APP為例,我們來看看搜索優化的核心目標、觀測指標和算法評估指標。
核心指標:搜索成功率=有點擊的query次數/總query次數(成功的定義可以是一次搜索后有消費行為,如滿足時長指標的點擊等)
全鏈路指標:
搜索算法評估指標:NDCG(詳細請看上一篇《做推薦業務,這4種機器效果測評方法你應該知道》)
搜索商業化
目前市面上常見的搜索商業化有:
- 搜索框引導暗文
- 搜索框皮膚
- 搜索熱門榜單
- 熱門搜索掛件
- 搜索結果頁優先推薦
- 搜索彩蛋
(左中:京東,右:淘寶)
這些位置多以CPM(Cost Per Mille)和CPC(Cost Per Click)的方式進行廣告合作,常見的付費方式還有CPD(Cost Per Download)、CPA(Cost Per Action)、CPP(Cost Per Purchase)等等。
對“搜索”后續發展的看法
目前資訊APP的搜索較少個性化(電商搜索有部分個性化),主要是基于NLP去設計開發搜索功能。隨著大數據和機器學習的發展,搜索的技術和功能設計也將會在NLP基礎上,利用用戶行為數據,往理解用戶(query understanding),搜索延展(query expansion )、搜索推薦(query suggestion)縱深,如深度學習模型訓練、Learning to rank,如根據用戶搜索后的點擊行為選擇訓練集等等,從而設計出更“貼心懂你”的搜索。
我們通過幾個問題感受下這種趨勢:
- 如果一次搜索無消費行為,二次搜索策略將如何優化?
- 從大數據上看,某個關鍵詞的搜索結果中,大多數用戶傾向于點擊一個相關性不如前排的內容,是否可以使用這類數據優化相關性的限制?
- 用戶在搜索結果頁點擊內容A后大概率會點擊其下的相關內容B,這種用戶行為數據能否用在搜索的優化上?
- 一個喜歡吃蘋果和一個喜歡使用蘋果手機的用戶,他們某些關鍵詞的搜索結果會一模一樣嗎?
本文由 @張小喵Miu 原創發布于人人都是產品經理,未經作者許可,禁止轉載。
題圖來自Unsplash,基于CC0協議。
哇哦 我準備分享的主題題目居然這么巧跟你的題目很相似哈哈哈!看了文章很受啟發 謝謝??