搜索功能是許多產(chǎn)品的核心益楼,例如電商搜索猾漫、內(nèi)容搜索等等。面對如何進(jìn)行搜索功能設(shè)計(jì)感凤,確實(shí)是個(gè)看似簡單實(shí)則深?yuàn)W的問題悯周。不管不顧,隨后畫一個(gè)條形框陪竿、正方體禽翼,他們就是搜索框和搜索圖標(biāo)就能代表一個(gè)搜索模塊。若要仔細(xì)研磨族跛,各種用戶交互問題闰挡,各類邏輯,那他們也是一個(gè)搜索系統(tǒng)庸蔼。這一切都取決于你解总,產(chǎn)品設(shè)計(jì)師如何設(shè)計(jì)。
設(shè)計(jì)一個(gè)搜索功能我們需要從用戶體驗(yàn)和功能實(shí)現(xiàn)兩方面出發(fā)姐仅。用戶體驗(yàn)包含了樣式UI設(shè)計(jì)花枫、交互設(shè)計(jì)。囊括起來說就是用戶搜索前掏膏、搜索中以及搜索后用戶對我們的功能的感知劳翰。而功能實(shí)現(xiàn)則是聚焦用戶對問題的輸入,和我們結(jié)果的輸出(結(jié)果匹配度)馒疹。由此我將分成搜索的設(shè)計(jì)和搜索的邏輯兩部分進(jìn)行說明佳簸。
搜索的設(shè)計(jì)
先從可感知的樣式來說。我們按照用戶路徑地圖來理解用戶使用功能時(shí)的具體步驟:
用戶使用產(chǎn)品 - 有疑問需要搜索解決 - 看見搜索功能 - 點(diǎn)擊搜索功能(展開輸入框) - 輸入問題 - 點(diǎn)擊確認(rèn)等到結(jié)果反饋 - 翻閱搜索結(jié)果 - 選擇結(jié)果進(jìn)行查閱颖变。
按照上述路徑生均,我們可以將用戶使用搜索功能的場景分為三部分:搜索前、搜索中腥刹、搜素后马胧。同時(shí)根據(jù)應(yīng)用場景的不同,還需區(qū)分移動(dòng)端和PC端衔峰。
搜索前
首先佩脊,我需要申明我對于搜索核心的定義,那就是搜索功能核心在于解決用戶的疑問垫卤,給予用戶滿意的答案威彰。因此我們在設(shè)計(jì)的時(shí)候,需要帶入場景假想我們就是用戶穴肘,我們在迫切需要解決問題的時(shí)候歇盼,我們會(huì)是什么樣的心里活,煩躁评抚?渴望旺遮?又或是興奮赵讯?。建立了同理心后才是功能的設(shè)計(jì)耿眉。
所以在搜索功能設(shè)計(jì)的時(shí)候边翼,對面用戶迫切的心情,我們合理設(shè)計(jì)搜索功能鸣剪。在用戶使用產(chǎn)品產(chǎn)生疑問的時(shí)候组底,我們要根據(jù)當(dāng)前場景進(jìn)行選擇放大、縮小搜索對于用戶的感官筐骇。在越容易產(chǎn)生疑問的地方選擇使用輸入框搜索作為設(shè)計(jì)方案债鸡,而在不容產(chǎn)生問題的地方還是可以選擇搜索圖標(biāo)作為解決方案。
這兩個(gè)解決方案是十分常見的铛纬,但我們需要注意厌均,除開樣式的差異在選擇使用輸入框作為搜索樣式的時(shí)候,大多人都偏愛在輸入框上做文字引導(dǎo)告唆,這種文字引導(dǎo)有引導(dǎo)使用文案和推薦搜素文案兩種棺弊。這樣做不是一定需要的,因?yàn)槲掖_實(shí)沒準(zhǔn)確的數(shù)據(jù)告訴你擒悬,做了和沒做在數(shù)據(jù)層次帶來的效果是什么模她。所以這是需要你自己自行選擇的。
搜索中
用戶點(diǎn)擊搜索功能輸入問題這段時(shí)間懂牧,我們看作搜索中侈净。在這里有兩種設(shè)計(jì)方式。分別是當(dāng)前頁面直接進(jìn)行搜索和進(jìn)入搜索獨(dú)立頁面僧凤。其中畜侦,當(dāng)前頁面直接進(jìn)行搜索,在pc端較為常見躯保,因?yàn)閜c頁面有大面積區(qū)域可使用旋膳,可以盡情展示內(nèi)容所以常見。
另外一種采用搜索獨(dú)立頁面在移動(dòng)手機(jī)端常見吻氧,因受限于手機(jī)屏幕大小,在不跳轉(zhuǎn)頁面直接搜索的情況下我們可展示的內(nèi)容過于受限咏连。而采用了新頁面承載搜索盯孙,那就可以提供更多的功能和內(nèi)容。
在這里我們可以通過后臺管理功能祟滴,盡情的增加熱門搜索的內(nèi)容振惰。同時(shí)在用戶輸入內(nèi)容后,我們對輸入內(nèi)容進(jìn)行聯(lián)想展示垄懂,方便用戶選擇他想搜索的實(shí)際內(nèi)容骑晶,提高搜索的易用性和便捷性痛垛。
但是產(chǎn)品設(shè)計(jì)師們需要注意的是。聯(lián)想展示內(nèi)容不易過多桶蛔,控制在7個(gè)詞條左右就行匙头,過多詞條會(huì)干擾用戶閱讀。展示內(nèi)容需要有獨(dú)立一套邏輯支撐仔雷,需要明確告知研發(fā)蹂析,為什么顯示這些內(nèi)容?這些內(nèi)容排序依據(jù)是什么等碟婆。(這里后面部分會(huì)介紹說明)
同理电抚,從提高搜索的易用性和便捷性這個(gè)目的出發(fā),我們可以收錄用戶近期歷史搜索竖共,以便用戶再次搜索相同問題蝙叛。至于歷史記錄每次展示幾個(gè),可參考7+-2法則控制數(shù)量公给。(一般人的短時(shí)記憶容量約為7個(gè)加減2個(gè)借帘,即5--9之間〖瞬迹可以理解為7加減2個(gè)組塊姻蚓。)
搜索后
搜索結(jié)果的展示在移動(dòng)端上一般是雙排和單排展示。雙排能夠展示更多的搜索結(jié)果匣沼。單排能對搜索結(jié)果展示更多的信息狰挡。到這里基本對于搜索功能的原型就沒有問題,下面開始說說搜索功能的邏輯部分释涛。
搜索的邏輯
先說結(jié)論:看似簡單的搜索其實(shí)并不只是由簡單的sql(數(shù)據(jù)操作語言)進(jìn)行全數(shù)據(jù)庫搜索加叁,里面還涉及對用戶搜索問題的、分詞唇撬、糾錯(cuò)它匕、預(yù)測、召回以及排序排序窖认。
分詞
分詞很好理解豫柬,就是當(dāng)用戶輸入問題后,對輸入的文字進(jìn)行拆分扑浸,就叫分詞烧给。分詞核心在于分詞法以及特性字詞典庫。
同時(shí)分詞也叫NLP(自然語言處理分析)算是AI人工智能的一個(gè)分支喝噪,畢竟你需要讓人工智能理解你說的是什么础嫡,學(xué)的是什么,不然就成人工智障了。那么搜索是按照什么方式進(jìn)行分詞的了榴鼎?其實(shí)分詞的方式很像小時(shí)候查字典伯诬。
1、逐詞匹配
我們理解為一個(gè)人給你一句話巫财,這時(shí)你需要將他們分成兩兩相對或三三相對的詞條盗似,但是你并不知道如何那幾個(gè)相鄰的字能夠組成字條。那么索性你直接拿著這句話去翻新歡詞典翁涤,從頭到尾翻一次桥言,發(fā)現(xiàn)沒有符合的時(shí)候,就刪除最后一個(gè)字葵礼,在去翻詞典号阿。以至于將詞典中的所有詞按由長到短的順序在文章中逐字搜索,直至文章結(jié)束鸳粉。
這種方式你可以想象下扔涧,如果是人是不是很崩潰。就算是電腦在進(jìn)行届谈,因?yàn)樾枰貜?fù)的查詢枯夜,也會(huì)造成效率低下,等半天才分詞成功艰山。
2湖雹、正向最大匹配法
最大正向匹配會(huì)按照我們的閱讀習(xí)慣,從左到右進(jìn)行匹配曙搬,而其中的最大的含義就是當(dāng)出現(xiàn)多個(gè)匹配詞條時(shí)摔吏,以字?jǐn)?shù)最多的詞條為準(zhǔn)。比如匹配野生動(dòng)物園這個(gè)詞條有兩個(gè)匹配纵装,一個(gè)是野生動(dòng)物圖案征讲,另一個(gè)是動(dòng)物園。那我們以野生動(dòng)物園為最終匹配橡娄。按照這個(gè)思路我們再說明诗箍。
有個(gè)用戶搜索:“成都動(dòng)物園在哪里”。
這個(gè)時(shí)候進(jìn)行第一次詞典查詢挽唉,按在最大的詞“成都動(dòng)物園在哪里”進(jìn)行查詢缸濒,發(fā)現(xiàn)沒有匹配忧吟。
進(jìn)行第二次查詢斑鸦,這次查詢“成都動(dòng)物園在哪”斋否,同樣沒發(fā)現(xiàn)匹配袖订。
進(jìn)行第三次查詢赴背,這次是“成都動(dòng)物園在”赋兵,還是發(fā)現(xiàn)沒有匹配的至扰。
第四匹配的時(shí)候楞遏,這次匹配“成都動(dòng)物園”茬暇,結(jié)果在詞條里面檢索到了首昔。我們保留結(jié)果是“成都動(dòng)物園”。隨后便去除“成都動(dòng)物園”變成“在哪里”重新開始檢索糙俗。這樣根據(jù)我們的詞典進(jìn)行分詞勒奇,我們可以得到結(jié)果:“成都動(dòng)物園”“在”“哪里”。這就是正向最大匹配
3巧骚、逆向最大匹配法
大致邏輯和正向匹配相同赊颠,唯一的區(qū)別在于它是從右到左,每次減去開頭的字劈彪。還是以“成都動(dòng)物園在哪里”為例竣蹦。
第一次詞典查詢,按在最大的詞“成都動(dòng)物園在哪里”進(jìn)行查詢沧奴,發(fā)現(xiàn)沒有匹配痘括。
進(jìn)行第二次查詢,這次查詢“都動(dòng)物園在哪里”滔吠,同樣沒發(fā)現(xiàn)匹配纲菌。
進(jìn)行第三次查詢,這次是“動(dòng)物園在哪里”疮绷,還是發(fā)現(xiàn)沒有匹配的翰舌。
.......
最后在第七次查詢我們得到“哪里”,隨后便去除“哪里”對““都動(dòng)物園在”進(jìn)行檢索冬骚。當(dāng)同樣的邏輯縮減到“在”后椅贱,還是沒有相對應(yīng)的詞典,那么將“在”也單獨(dú)剔出唉韭,開始檢索“成都動(dòng)物園”夜涕。這樣第一次檢索就成功檢索出來,得到結(jié)果“哪里”“在”“成都動(dòng)物園”這樣的分詞属愤。因?yàn)槭欠聪蚱鋵?shí)結(jié)果和正向結(jié)果相同女器。
4、雙向匹配
這種匹配法是為了更加準(zhǔn)確的分詞出現(xiàn)住诸,把正向和反向兩種算法都切一遍驾胆,然后根據(jù)詞條顆粒度來進(jìn)行選擇。分詞的詞條越長越好贱呐,非詞典詞和單字詞越少越好的原則丧诺,選出這里面最合適的進(jìn)行匹配。例如:
非詞典內(nèi)的詞:正向匹配(1)> 反向匹配(0) 選擇反向
詞典內(nèi)的單字:正向匹配(2)= ?反向匹配(2) 持平不做選擇
總分詞數(shù)量:正向匹配(3)< ?反向匹配(2)選擇反向
詞意糾錯(cuò)
詞意糾錯(cuò)也是搜索里重要的一環(huán)節(jié)奄薇,在搜索的時(shí)候驳阎,打錯(cuò)字說錯(cuò)話是很常見場景(語言搜索)。并且因?yàn)槲淖趾驼Z言是情感交流的渠道,中文漢字會(huì)因?yàn)槁曊{(diào)的不同有著不同的含義呵晚。同時(shí)一詞多義蜘腌,通假字等也是十分頭疼的事情。
這詞意糾錯(cuò)也可以按照查字典來理解饵隙,只是查詢的字典是特殊字典里面的內(nèi)容包含了情感撮珠,拼音還有聲調(diào)相關(guān)的內(nèi)容。抽象點(diǎn)的描述金矛,我們在看見“康帥傅”的時(shí)候大腦會(huì)把“康帥傅”自動(dòng)糾錯(cuò)成“康師傅”芯急,這就有點(diǎn)自動(dòng)糾錯(cuò)的味道。
1驶俊、拼音糾錯(cuò)
當(dāng)輸入的漢字存在錯(cuò)誤時(shí)娶耍,系統(tǒng)需要及時(shí)聯(lián)系上下文進(jìn)行解析,可以將漢字轉(zhuǎn)換成拼音饼酿,通過同拼音進(jìn)行識別伺绽,比如“如何吧大象放入病象”,把他們未能分詞成功單獨(dú)留下的漢字轉(zhuǎn)化成拼音“如何“”ba“”大象“”放入“”bing“”xiang”在查詢字典進(jìn)行處理嗜湃。
2奈应、模型算法
這部分高于繁瑣,想了解的可自行搜索:SVM购披、Maxent等
類目預(yù)測
用戶使用搜索功能在于得到解答杖挣,所以我們需要理解用戶搜索內(nèi)容的含義。比如用戶搜索蘋果的時(shí)候刚陡,她搜索的是吃的蘋果還是蘋果手機(jī)了惩妇。一個(gè)吃一個(gè)用這兩個(gè)答案是風(fēng)馬牛不相及的,所以預(yù)測類目會(huì)對用戶搜索結(jié)果影響很大筐乳。
做類目預(yù)測有幾個(gè)方法:
1歌殃、人工配置
通過后端埋點(diǎn)日志搜集最近熱門的搜索詞,對這些搜索詞進(jìn)行指定配置蝙云,這樣就可以保證當(dāng)用戶搜索蘋果的時(shí)候出來的是蘋果手機(jī)氓皱,而不是真的蘋果。這樣也是最簡單有效的方法勃刨,但麻煩在需要安排人長期維護(hù)波材。
2、類目相關(guān)性
通過對搜索詞進(jìn)行算法計(jì)算身隐,從搜索詞的重要性廷区、類目數(shù)、類目出現(xiàn)次數(shù)贾铝、搜索詞出現(xiàn)次數(shù)等進(jìn)行計(jì)算隙轻。
代表性tf-dc算法埠帕。
結(jié)果排序
搜索結(jié)果的排序也是十分頭疼的事情,比如搜索蘋果手機(jī)玖绿,出現(xiàn)的結(jié)果是10萬+條商品信息搞监,那么誰排第一這就成了一個(gè)問題。因此我們要從權(quán)重出發(fā)進(jìn)行權(quán)重排序镰矿。(商品少也可以按照最新更新時(shí)間排序,哈哈看個(gè)人)俘种。
詞頻:對搜索對query進(jìn)行分詞處理秤标,在進(jìn)行預(yù)測類目后對高詞頻內(nèi)容優(yōu)先展示
用戶標(biāo)簽:符合用戶標(biāo)簽喜好的商品進(jìn)行加權(quán),優(yōu)先排序
時(shí)間段:對當(dāng)前時(shí)段營業(yè)(客服在線)進(jìn)行加權(quán)
銷量、好評率:同理這就不說了
商品時(shí)效:對新更新商品進(jìn)行加權(quán)宙刘,可用于互沖舊商品銷量苍姜、好評的加
付費(fèi):競價(jià)廣告、付費(fèi)升權(quán)等
- END -